gpt4 book ai didi

scope - 限制 Apache Camel 中事务的范围

转载 作者:行者123 更新时间:2023-12-04 03:07:38 29 4
gpt4 key购买 nike

我有一个带有多个处理器的事务处理 Camel 路由

from(Constant.RouteA)
.transacted()
.process(processor1)
.process(processor2)
.process(processor3)
.wireTap(Constant.RouteB)
.wireTap(Constant.RouteC)
.end()

我的问题是我不希望路由的最后部分(窃听)成为事务的一部分,即我希望它们在 processor3 完成并提交事务后执行。

最初我考虑使用 onCompletion(),但它似乎不能与 transacted() 一起使用。

所以我找到了另一种需要使用 policy() 来限制事务范围的方法,即

from(Constant.RouteA)
.policy("PROPAGATION_REQUIRED")
.process(processor1)
.process(processor2)
.process(processor3)
.end()
.wireTap(Constant.RouteB)
.wireTap(Constant.RouteC)
.end()

问题是此解决方案需要在 Spring 配置中定义 SpringTransactionPolicy,但我正在使用的软件不使用 Spring。事务由 Bitronix 管理,一切都通过使用 transacted() 方法进行,据我所知,它不允许您限制事务的范围。

有没有一种简单的方法可以实现我的目标?希望不要将 Spring 带入画面。谢谢!

最佳答案

尝试创建两条路线。例如:

from(direct:startRoute)
.to(Constant.RouteA)
.wireTap(Constant.RouteB)
.wireTap(Constant.RouteC);

from(Constant.RouteA)
.transacted()
.process(processor1)
.process(processor2)
.process(processor3);

一旦路由“Constant.RouteS”完成,所有更改都将提交。

关于scope - 限制 Apache Camel 中事务的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47671806/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com