【发布时间】:2019-01-12 03:53:31
【问题描述】:
有没有办法将 onCompletion 上下文范围的“处理程序”添加到 Camel 上下文? Camel onCompletion documentation 展示了如何使用 Spring XML DSL 进行操作,但我无法找到以编程方式进行操作的方法。
【问题讨论】:
标签: java apache-camel
有没有办法将 onCompletion 上下文范围的“处理程序”添加到 Camel 上下文? Camel onCompletion documentation 展示了如何使用 Spring XML DSL 进行操作,但我无法找到以编程方式进行操作的方法。
【问题讨论】:
标签: java apache-camel
// define a global on completion that is invoked when the exchange is complete
onCompletion().to("log:global").to("mock:sync");
【讨论】:
因为 onComplete 只能是 RouteBuilder 范围。创建一个真正的全局 onComplete 处理器
// Initialize an instance of the definition
OnCompletionDefinition globalOnComplete = new OnCompletionDefinition();
globalOnComplete.to("log:onComplete");
在您的RouteBuilder 实现中,在定义任何路由之前,将上面的实例添加到定义中
@Override
public void configure() throws Exception {
// Add onCompletion instance for all routes within this RouteBuilder
this.getRouteCollection()
.getOnCompletions()
.add(globalOnComplete);
// Route definition
from("direct:input").to("log:output");
}
【讨论】: