2017-07-28 153 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()