59.12. 事务支持
可作为 Camel 2.19 提供
Camel CDI 使用 JTA 支持 Camel 事务客户端。
该支持是可选的,因此在使用 Maven 时通过显式添加 JTA 作为依赖项,在应用程序类路径中具有 JTA,例如:
<dependency> <groupId>javax.transaction</groupId> <artifactId>javax.transaction-api</artifactId> <scope>runtime</scope> </dependency>
您必须把应用程序部署到 JTA 兼容容器中,或提供独立 JTA 实施。
小心
请注意,事务管理器使用 java:/TransactionManager
键查找为 JNDI 资源。
以后将添加更多灵活的策略来支持更广泛的部署场景。
59.12.1. 事务策略
Camel CDI 为通常受支持的 Camel TransactedPolicy
作为 CDI Bean 提供实施。可使用转换的 EIP (例如,通过转换的 EIP)按名称查找这些策略:
class MyRouteBean extends RouteBuilder { @Override public void configure() { from("activemq:queue:foo") .transacted("PROPAGATION_REQUIRED") .bean("transformer") .to("jpa:my.application.entity.Bar") .log("${body.id} inserted"); } }
这等同于:
class MyRouteBean extends RouteBuilder { @Inject @Named("PROPAGATION_REQUIRED") Policy required; @Override public void configure() { from("activemq:queue:foo") .policy(required) .bean("transformer") .to("jpa:my.application.entity.Bar") .log("${body.id} inserted"); } }
支持的事务策略名称是:
-
澳大利亚_NEVER
, -
PROPAGATION_NOT_SUPPORTED
, -
PROPAGATION_SUPPORTS
, -
PROPAGATION_REQUIRED
, -
PROPAGATION_REQUIRES_NEW
, -
PROPAGATION_NESTED
, -
PROPAGATION_MANDATORY
.