簡體   English   中英

Hazelcast節點未獲得第一條發布的消息

[英]Hazelcast nodes not get the first published message

我有兩個節點。 他們兩個都訂閱了一個主題。

當一個節點發布消息時,另一個節點不會在第一時間收到消息。 如果該節點第二次發布消息,則另一個節點將獲得該消息。

如果在應用程序初始化階段調用hazelcastInstance.getTopic(TopicX),則消息偵聽器將根據需要工作。

我認為這是關於lazy-init屬性。

有沒有更可靠的方法可以解決這個問題? 可靠的話題可能是解決方案? 如果是這樣,是否有任何示例代碼可以用spring實現可靠的主題?

@vourla,我建議使用ReliableTopic,因為它由RingBuffer支持,並且只要backring緩沖區未滿,偵聽器就可以正確讀取第一條消息。

另外,請參閱相關的文檔部分: https : //docs.hazelcast.org/docs/3.11.1/manual/html-single/index.html#configuring-reliable-topic

與其以編程方式添加偵聽器,不如通過配置添加它。 另外,對於Topic,由於事件是觸發事件而忘記了事件,因此,如果在從另一個節點觸發事件之后添加偵聽器,則無論是通過程序定義還是通過config進行定義,但無論使用ReliableTopic,都不會起作用。

您還可以檢查Spring相關文檔部分和相關代碼示例: https : //github.com/hazelcast/hazelcast-code-samples/tree/master/hazelcast-integration/spring-configuration

@ gokhan-oner,謝謝您的回答。

實際上,我一開始嘗試實現可靠的主題。 但是我在春季找不到示例實現。 春天的語法有點不同。 現在,實現是這樣完成的:

 <hz:hazelcast id="instance">
    <hz:ringbuffer name="topicX" capacity="1000" time-to-live-seconds="5"/>
    <hz:ringbuffer name="topicY" capacity="1000" time-to-live-seconds="5"/>
    <hz:reliable-topic name="topicX" topic-overload-policy="BLOCK"/>
    <hz:reliable-topic name="topicY" topic-overload-policy="BLOCK"/>
</hz:hazelcast>

但是,以聲明方式實現主題偵聽器無效。 當上下文初始化時,我以編程方式添加了偵聽器。

什么不適合我:

<hz:reliable-topic name="topicZ" topic-overload-policy="BLOCK">
    <hz:message-listeners>
        <hz:message-listener class-name="tr.com.test.HazelcastTopicListener"/>
    </hz:message-listeners>
</hz:reliable-topic>

工作原理:

HazelcastTopicListener hazelcastTopicListener = new HazelcastTopicListener();
HazelcastInstance hazelcastInstance = SpringIntegration.getBean(HazelcastInstance.class);
ITopic<Message> testTopic= hazelcastInstance.getTopic("topicZ");
testTopic.addMessageListener(hazelcastTopicListener );

@vourla,請檢查hazelcast-spring-XX.xsd文件。 屬性名稱是class-or-bean-name ,而不是class-name 你能像下面這樣嘗試嗎:

<hz:reliable-topic name="topicZ" topic-overload-policy="BLOCK">
    <hz:message-listeners>
        <hz:message-listener class-or-bean-name="tr.com.test.HazelcastTopicListener"/>
    </hz:message-listeners>
</hz:reliable-topic>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM