私のプログラムには、トピックを介して通信するパブリッシャーとサブスクライバーの 2 つのモジュールがあります。
サブスクライバーがメッセージを受信するには、パブリッシャーより前に開始する必要があることを理解しています。ただし、何らかの理由でサブスクライバーがダウンし、再起動が必要になるシナリオが発生する場合があります。パブリッシャーの後にサブスクライバーを開始すると、メッセージを受信できるようにする方法はありますか?
私のプログラムには、トピックを介して通信するパブリッシャーとサブスクライバーの 2 つのモジュールがあります。
サブスクライバーがメッセージを受信するには、パブリッシャーより前に開始する必要があることを理解しています。ただし、何らかの理由でサブスクライバーがダウンし、再起動が必要になるシナリオが発生する場合があります。パブリッシャーの後にサブスクライバーを開始すると、メッセージを受信できるようにする方法はありますか?
春の DMLC と永続的なサブスクライバーを使用してコード例を追加します。テンプレートからセッションを取得し、永続的なコンシューマーを自分で作成する必要があるため、プレーンな JMSTemplate (これにタグを付けたので、JMS テンプレートを使用して受信していると思いますか?) でこれを実現するのは困難です。DMLC アプローチを使用する場合、これは自動的に処理されます。
<bean id="myDurableConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="myCf" />
<property name="sessionTransacted" value="true" />
<property name="subscriptionDurable" value="true"/>
<property name="durableSubscriberName" value="myDurableNameThatIsUniqueForThisInstance" />
<property name="destinationName" value="someTopic" />
<property name="messageListener" ref="myListener" />
< /bean>
切断と再接続のシナリオのみに関心がある場合は、永続的なサブスクライバーが探しているものだと思います。
http://activemq.apache.org/how-do-durable-queues-and-topics-work.html