次のようなデッド レター チャネルで設定された Camel ルートがあります。
from(...)
.errorHandler(deadLetterChannel("vm:deadLetter")
.useOriginalMessage()
.retryWhile(method(new BadMessageRuleset(redeliveryTimes), "shouldRetry"))
.maximumRedeliveries(redeliveryTimes)
.redeliveryDelay(redeliveryDelayInitial)
.backOffMultiplier(redeliveryDelayMultiplier)
...
from("vm:deadLetter")
.bean(deadLetterService)
.end();
正常に動作していますが、メッセージが配信不能チャネルに送信される前に発生した再配信の数を保存する必要があります。私は useOriginalMessage() を使用していることに注意してください。これは、配信不能チャネルに保存したいメッセージです (はい! 私のルートは途中で変更します)。
メッセージ ヘッダー Exchange.REDELIVERY_COUNTER で再配信の回数にアクセスしようとしましたが、メッセージが deadLetterService Bean に到達すると、常に null になります。元のメッセージにはこのヘッダー情報がないため、そうであると理解しています。
再配信カウンターを保持し、同時に元のメッセージを復元するにはどうすればよいですか? それを行う方法はありますか?
前もって感謝します。
ヘレノ