2016-03-23 16 views
2

私はActiveMQを初めて利用しています。私は2 queuesparser-queuegeneration-queueです。私のアプリケーションは2台の異なるサーバで稼働しています。どちらも待ち受けのです。私のワークフローは非常にシンプルで、パーサーキューからメッセージを取得し、それを処理し、ジョブが完了したときに別のメッセージを生成キューに入れます。アプリケーションが中断した場合、ActiveMQでキュー内のメッセージを回復する方法はありますか?

ただし、ジョブプロセス中にメッセージを取得して処理すると、アプリケーションがシャットダウンしたり、何らかの理由で破損したりすると、

正しく処理されなかったこの同じメッセージは、処理するために再びキューに送信できますか?

私は約Subscription Recovery Policyを読んでいますが、非常に複雑なテーマのようです。私の仕事はアプリケーションによって完全に処理されるまでに時間が変わる可能性があるため、時間ベースのポリシーを使用するかどうかはわかりません。

答えて

4

JMSコンシューマで自動確認機能を無効にする必要があります。その場合、メッセージはクライアントが確認するまで消費されません。あなたが春を使用している場合、それは次のように行うことができます

:JMSトランザクションの

<bean id="myJmsConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
    <property name="connectionFactory" ref="jmsFactory"/> 
    <property name="destinationName" value="MY_QUEUE"/> 
    <property name="messageListener" ref="myJmsListener"/> 
    <property name="sessionTransacted" value="false"/> 
    <property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/> 
    <property name="exceptionListener" ref="exceptionListener"/> 
</bean> 

詳細はここで見つけることができます:http://www.javacodebook.com/2013/08/20/spring-book-chapter-17-messaging-with-spring/11/

+0

あなたが右のイゴールです!あなたの答えをありがとう! –

関連する問題