2016-09-01 8 views
3

私はすべての@RabbitListenerにリトライメカニズムを設定する方法を見つけようとしています。@RabbitListenerの再試行設定プログラムでデッドレターキューを指定

listener: 
    auto-startup: true 
    concurrency: 1 
    max-concurrency: 1 
    retry: 
    enabled: true 
    initial-interval: 1000 
    max-attempts: 3 
    max-interval: 10000 
    multiplier: 2 
    stateless: true 

をそして、それはエラーがメッセージで送信されないだけの問題で正常に動作します:私はすでにプロパティで試してみました。私が持っている唯一の問題は、メッセージを特定のものに送るために、x-dead-letter-exchangex-dead-letter-routing-keyの引数を追加するためにキューを変更しなければならないということです。これは避けたいものです。

だから私の質問は以下のとおりです。

  1. は、プログラムのメッセージがキューを再作成せずに試行を排出した後に行くべきDLQかを指定する方法はありますか? は、引数x-死者を使用していない-...

私は春ブーツ1.4.0.RELEASEを使用しています。

答えて

3

経由しないプロパティ。

あなたがあなた自身の再試行インターセプタとリスナーコンテナ工場のアドバイスチェーン上書きする必要があります - あなたが適切に構成されたRepublishMessageRecovererを注入する必要はなく、

builder.recoverer(new RejectAndDontRequeueRecoverer()); 

を注入する - - などへの公開RetryInterceptorBuilderで構築をあなたの選択の交換、それはメッセージヘッダーに追加情報(スタックトレースなど)を追加します。

デフォルトのインターセプタがbuilt from the propertiesである方法については、SimpleRabbitListenerContainerFactoryConfigurerを参照してください。

再公開リ回収者については、this section of the Spring AMQP docsに記載されています。

関連する問題