Camel:跟踪使用分离器时的交换历史

时间:2013-11-22 18:33:12

标签: apache-camel

我正在使用Apache Camel,并尝试创建工作流中每条消息处理历史记录的日志。

对于简单的直通工作流,消息进入,通过几个步骤处理,然后离开,这可能就像保持交换的顺序日志一样简单。我可以通过编写一个自定义TraceEventHandler来实现这一点,该调用在每个交换中调用,并允许我进行日志记录。

但是,如果涉及分割器,我不知道如何计算任何给定交换的出处。我可以维护自己的交换记录,但是对于拆分器,并非以前的所有活动都不是当前交换的祖先。也就是说,如果传入的消息被分成part1和part2,然后分别进行处理,我不想在计算part2的历史时考虑part1的处理。

TraceEventHandler有这个方法:

@Override
public void traceExchange(ProcessorDefinition<?> node, Processor target, 
  TraceInterceptor traceInterceptor,Exchange exchange) throws Exception {
}

我希望有一个像Exchange getPreviousExchange()这样的Exchange方法可以在traceExchange中调用,但我找不到这样的东西。

有什么建议吗?如果有更好的方法,我不会使用自定义TraceEventHandler。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以通过使用密钥“CamelCorrelationId”查找exchange属性来查找以前的Exchange ID。

答案 1 :(得分:1)

如果要将后拆分处理作为单独的分支进行跟踪,则需要考虑Camel属性“CamelSplitIndex”。此属性将指示您正在处理的拆分的哪个迭代以及与William建议的CamelCorrelationId结合使用时,将提供完整的图片。