我有一个配置有死信通道的骆驼路线,如下所示:
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 时它始终为空。我确实理解这是因为原始消息没有此标头信息。
如何在保留重新投递计数器的同时恢复原始消息作为交换?有没有办法做到这一点?
提前致谢。
海伦诺