2017-12-13 17 views
0

ActiveMQ ArtemisまたはSpring JMSクライアントをエラー時に他のメッセージを消費しないように設定する方法はありますか?Artemis:エラー時にメッセージを消費するのを止めるには?

次のように私は私のブローカーを構成した:

<addresses> 
    <address name="SimplePointToPoint"> 
     <anycast> 
      <queue name="SimplePointToPoint"/> 
     </anycast> 
    </address> 
</addresses> 
<address-settings> 
    <address-setting match="SimplePointToPoint"> 
     <max-delivery-attempts>-1</max-delivery-attempts> 
    </address-setting> 
</address-settings> 

これは私の消費者のコードです:

@JmsListener(destination = "SimplePointToPoint") 
public void consumeMessage(Message<String> message) { 
    if (message.getPayload().contains("error")) 
     throw new RuntimeException(); 

    log.info("received message: {}", message.getPayload()); 
} 

message1message2 with errormessage3を送信するとき、私は消費者がmessage1を処理したいと永遠にmessage2 with errorを再試行してください。 message3は、message2 with errorが正常に消費されるまで処理しないでください。実際には、message3が再試行の間に消費されます。この動作を変更するには?何か案は?

答えて

-1

デフォルトでActiveMQプリフェッチは1000です。

the documentationを参照してください。

ActiveMQPrefetchPolicyのインスタンスは、ActiveMQConnectionFactoryまたはActiveMQConnectionに指定できます。これにより、個々のプリフェッチ値をすべて設定できます。それぞれの異なるサービス品質は異なる値を持つためです。例えば

永続キュー(デフォルト値:1000)

...

+0

あなたの答えは、Apache ActiveMQの5.xのに適用されますが、問題は、Apache ActiveMQのアルテミスブローカーについてでした。 –

関連する問題