2016-08-02 52 views
0

我有一個應用程序,其中Delayer綁定到在3臺服務器上運行的持久MessageStore。在延遲時間間隔後,延遲器如何從持久存儲器中接收消息?消息可以被任何一個Delayer拾取,或者它將成爲將消息放入Store的特定服務器的Delayer?Delayer持久MessageStore實現

回答

1

延遲器不是爲了在羣集中分發消息 - 每個應該有自己的存儲。

否則,如果其中一個成員重新啓動,它將重新計劃所有消息,只要您使用事務,您將不會得到任何重複,因爲其中一個計劃(原始計劃或重新計劃)將無法找到消息。

最好爲每個存儲/區域分別使用一個存儲區域,並使用其他一些機制在整個羣集中分配工作。

+0

謝謝Gary!如果任何一個Delayer成員重新調度消息,因爲它是一個常見的JBBCMessageStore,對嗎?如果我們在運行Delayer的3臺服務器上使用相同的REGION(使其分發)可以實時地或者在重新啓動之後進行選擇嗎?另一種選擇就是讓Delayer部署在不同的服務器上,每個服務器都配置了自己的區域。如果服務器功能出現了,沒有能力處理存儲的消息。 –

+0

爲了保持簡潔,我們可以通過在持久性存儲中使用常見的REGION來使Delayer分佈嗎? –

+0

正如我所說,如果您使用交易(重新啓動後),它只會按預期工作。重新啓動時,發佈計劃將從數據庫重建。我的首選配置是每個實例的不同區域,以避免混淆。 –