Camel 3.16中已移除的newExchange()替代方案咨询
Camel 3.16 替换 WireTapDefinition.newExchange() 的方案
在Camel 3.x版本中,WireTapDefinition.newExchange(Processor)方法已被移除,替代方案是使用withNewExchange()结合处理器来创建并处理新的Exchange,完全匹配原逻辑。
替换后的代码
exceptionErrorHandlers.forEach { onException(it.exceptionToHandle) .process(MyErrorProcessor()) .wireTap(someUri) .withNewExchange() .process(MyProcessor()) .end() .handled(true) .bean(failedCounter, "inc()") }
逻辑说明
withNewExchange()会创建一个全新的Exchange实例,替代原newExchange()的创建新交换功能- 后续的
.process(MyProcessor())会处理这个新Exchange,和原代码中newExchange(MyProcessor())的逻辑完全一致 - 整体流程保持不变:捕获异常 → 执行错误处理器 → 通过wireTap发送新生成的Exchange到目标URI → 标记异常已处理 → 调用计数器递增方法
如果你的Camel版本支持withNewExchange(Processor)重载(部分3.x版本提供),也可以简化为:
exceptionErrorHandlers.forEach { onException(it.exceptionToHandle) .process(MyErrorProcessor()) .wireTap(someUri) .withNewExchange(MyProcessor()) .end() .handled(true) .bean(failedCounter, "inc()") }
内容的提问来源于stack exchange,提问作者neu242
相关产品推荐
相关产品推荐

