Red Hat Training
A Red Hat training course is available for Red Hat Fuse
57.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 リソースとしてルックアップされることに注意してください。
各種のデプロイメントシナリオをサポートするために、より柔軟なストラテジーが今後追加されます。
57.12.1. トランザクションポリシー
Camel CDI は、CDI Bean としてサポートされる Camel TransactedPolicy
の実装を提供します。これらのポリシーをトランザクション 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"); } }
サポートされるトランザクションポリシー名の一覧は、以下のとおりです。
-
PROPAGATION_NEVER
, -
PROPAGATION_NOT_SUPPORTED
, -
PROPAGATION_SUPPORTS
, -
PROPAGATION_REQUIRED
, -
PROPAGATION_REQUIRES_NEW
, -
PROPAGATION_NESTED
, -
PROPAGATION_MANDATORY
.