这是一种冗长的描述,为此道歉。
我需要一个Camel路线,我们对每个步骤都有严格的审核要求,无论成功与否。
典型的路线是:
EndpointA - >队列1 - >转型 - >队列2 - > EndpointB
我们必须在每次成功提交队列后进行审核。请注意,有许多路线,如aboove,每个路线都有不同的队列名称。
一个解决方案是:
EndpointA - >队列1 - > AuditQueue - >转型 - >队列2 - > AuditQueue - > EndpointB - > AuditQueue
但解决方案看起来很糟糕,因为我必须在主要路径中放置另一个AuditQueue来解决此问题。
如果我将Queue1,Queue2等更改为主题,那么我必须编写多个使用者(我的意思是多个来自多个的路由(如from(Queue1),from(Queue2)等)以便我可以审核每个步骤中的消息。我正在寻找的是这个问题的可重用和优雅的解决方案吗?
提前致谢。
亲切的问候, Sreejesh。
答案 0 :(得分:1)
在我们的主要路线的顶部,我们使用onCompletion
设施。当交换完成,成功或失败时,它总是被触发。它可以配置全局或每个路由范围。
例如
from("direct:mainRoute").routeId("mainRoute")
.onCompletion()
.to("direct:completionRoute")
.process(myCompletionProcessor)
.end()
答案 1 :(得分:0)
检查Camel的EventNotifierSupport
和ExchangeSentEvent。