2017-07-28 155 views
0

這是一種很長的描述,道歉。駱駝路線審計

我有一個駱駝路線的要求,我們對每一步都有嚴格的審計要求,無論成功或失敗。

一個典型的路線是:

EndpointA - >隊列1 - >轉換 - >隊列2 - > EndpointB

我們必須審覈後每一次成功提交的隊列。請注意,有很多很多的路由,例如aboove,每個路由名稱都不相同。

一種解決方案是:

EndpointA - >隊列1 - > AuditQueue - >轉換 - >隊列2 - > AuditQueue - > EndpointB - > AuditQueue

但解決方案看起來糟糕,因爲我已經把另一個AuditQueue在解決這個問題的主要途徑。如果我將Queue1,Queue2等更改爲主題,則必須編寫多個消費者(我的意思是多個消費者(來自(Queue1),來自(Queue2)等多個路由),以便我可以審計在每一步的消息。我在找一個可重複使用的和優雅的解決這個問題?在此先

感謝。

親切的問候, Sreejesh。

回答

0

在我們的主要路線的頂部,我們使用onCompletion設施。當交換完成,成功或失敗時,它總是被觸發。它可以配置一個全局或每個路由範圍。

例如

from("direct:mainRoute").routeId("mainRoute") 
     .onCompletion() 
      .to("direct:completionRoute") 
      .process(myCompletionProcessor) 
     .end()