2013-11-22 97 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。