如何在Camel死信路线中同时拥有原始信息和重新传递计数器

时间:2015-06-01 18:40:54

标签: java apache-camel dead-letter

我有一个配置了死信频道的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。我明白这是因为原始邮件没有这个标题信息。

我如何保留重新传送计数器并同时恢复原始邮件?有没有办法做到这一点?

提前致谢。

Heleno的

0 个答案:

没有答案