apache-camel - 如果任何子消息失败,如何回滚拆分器的整个事务
问题描述
当前用例:通过以下配置,我们尝试使用自定义迭代器处理器拆分父消息,并根据其内容将不同的端点分配给测试处理器内的不同子消息。
from("endpoint")
.split().method(iteratorProcessor, "execute")
.shareUnitOfWork()
.stopOnException()
.bean(testProcessor, "process")
.receipientList(header("destination"));
综上所述,成功案例按预期工作。
问题:如果拆分后,第一条消息发布成功而第二条消息发布失败,我们观察到第二条子消息单独被定向到错误处理程序。
要求:如果整个过程中出现任何故障,我们希望将IN消息重定向到错误处理程序(完成回滚),并且不要发布任何其他子消息。
解决方案
onException 子句提供了使用原始消息的选项。
来自骆驼文档:
onException(MyOrderException.class)
.useOriginalMessage()
.handled(true)
.to("jms:queue:order:failed");
推荐阅读
- javascript - 本地存储不适用于记住类切换的最后用户输入
- python - 无法将 feed_dict 键解释为 Tensor:Tensor Tensor("Placeholder:0", shape=(135162, 6), dtype=float32) is not an element of this graph
- typescript - 运行一个将 typescript 测试与 jest 合并的声明
- javascript - 对检测功能存在的“hasOwnProperty”感到困惑
- c# - 如何在 html 中将字符串转换为 html
- php - 如何在保留兄弟键值对的同时基于键值与数组相交
- python - 检查一个数组中的元素是否存在于另一个数组中?
- python - 如何从第二项迭代python dict
- java - 通过实现 onSeekBarChangeListener 在 TextView 中的多个搜索栏值
- angular - 错误 ReferenceError:particleJS 未定义 ~ Angular Universal + Webpack