2017-11-09 4 views
0
private BrokerService createBroker() throws IOException, Exception { 
     BrokerService broker = new BrokerService();KahaDBStore kaha=new KahaDBStore(); 
     File file =new File(path); 
     TransportConnector connector = new TransportConnector(); 
     connector.setUri(new URI(DEFAULT_BROKER_URL)); 
     kaha.setDirectory(file); 
     broker.addConnector(connector); 
     broker.setPersistenceAdapter(kaha); 
} 

これは私のブローカーの設定です。誰かが設定を指定できますか、再配信ポリシーの後にメッセージがDLQに送られないようにするにはどうしたらいいですか?メッセージが再配信ポリシーの後にActivemqのDead LetterQueue(DLQ)に送られないようにする方法

注:私はすでに、これを訪問したhttp://activemq.apache.org/message-redelivery-and-dlq-handling.html

答えて

2

の質問です - あなたの代わりに彼らとはどのように過ごしたいですか?

すべての再配信の試行が終わった後にドロップするだけですか?

設定廃棄プラグイン

<deadLetterStrategy> 
    <discarding/> 
</deadLetterStrategy> 

またはJava

PolicyEntry policy = new PolicyEntry(); 
policy.setDeadLetterStrategy(new DiscardingDeadLetterStrategy()); 
PolicyMap policyMap = new PolicyMap(); 
policyMap.setDefaultEntry(policy); 
broker.setDestinationPolicy(policyMap); 

によって決して排気再配信とメッセージが通過するまでみては?

これは、ポイズングメッセージ、つまり決して処理できず、フローを中断しないように削除されなければならない破損したペイロードを持つメッセージの問題である可能性があります。とにかくこれを望むなら、クライアント側maximumRedeliveryを-1(see docs)に設定してください。

+0

は、既存の構成に追加することができます。私は実際にXML設定を使用しません。私はJavaベースの設定を使用します。 DLQに行くのではなく、再試行後にメッセージを破棄したい。 – hars

1

あなたが使用することができます。

RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy(); 
redeliveryPolicy.setMaximumRedeliveries(-1); 
関連する問題