2013-11-22 63 views
2

我使用的是Apache Camel,并试图创建工作流中每条消息处理历史记录。骆驼:跟踪使用分离器时的交换历史

对于简单的直通式工作流,消息进入后,只需几个步骤即可处理,然后离开,这可能非常简单,只需保留交换机的顺序日志。我可以通过编写一个自定义的TraceEventHandler来完成此操作,该操作在每个交易所都会被调用,并允许我进行日志记录。

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

一个TraceEventHandler有以下方法:

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

而且我预计会有一个交换法像Exchange getPreviousExchange(),我可以内部traceExchange打电话,但我能找到这样的事情。

有什么建议吗?如果有更好的方法来做到这一点,我还没有结婚使用自定义的TraceEventHandler。

谢谢。

回答

1

如果您想要将分离后处理作为单独的分支进行跟踪,那么您需要考虑骆驼属性“CamelSplitIndex”。此属性将指示您正在处理的分割的哪个迭代,以及如何与William建议的CamelCorrelationId结合时,将提供完整图像。

2

您可以通过使用键“CamelCorrelationId”查找交换属性来查找以前的Exchange ID。