179.17. 取引消費の有効化
一般的な要件は、トランザクション内のキューから消費し、Camel ルートを使用してメッセージを処理することです。これを行うには、コンポーネント/エンドポイントで次のプロパティーを設定していることを確認してください。
-
transacted
= true -
transactionManager
= トランザクションマネージャー - 通常はJmsTransactionManager
詳細は、Transactional Client EIP パターンを参照してください。
JMS を介したトランザクションと [Request Reply]
Request Reply over JMS を使用する場合、単一のトランザクションを使用することはできません。JMS はコミットが実行されるまでメッセージを送信しないため、サーバー側はトランザクションがコミットされるまで何も受信しません。したがって、リクエストリプライ を使用するには、リクエストの送信後にトランザクションをコミットし、別のトランザクションを使用してレスポンスを受信する必要があります。
この問題に対処するために、JMS コンポーネントは異なるプロパティーを使用して、一方向メッセージングと要求応答メッセージングのトランザクションの使用を指定します。
transacted
プロパティーは、InOnly メッセージ交換パターン (MEP) に のみ 適用されます。
transactedInOut
プロパティーは、InOut (Request Reply) メッセージエクスチェンジパターン (MEP) に適用されます。
Request Reply (InOut MEP) にトランザクションを使用する場合は、transactedInOut=true
を設定する 必要があります。
Camel 2.10 以降で利用可能
コンポーネント/エンドポイントで次のプロパティーを使用して、DMLC トランザクションセッション API を利用できます。
-
transacted
= true -
lazyCreateTransactionManager
= false
そうすることの利点は、設定された TransactionManager なしでローカルトランザクションを使用するときに、cacheLevel 設定が受け入れられることです。TransactionManager が設定されている場合、DMLC レベルでキャッシュは発生せず、プールされた接続ファクトリーに依存する必要があります。この種のセットアップの詳細は、こちら と こちら を参照してください。