Red Hat Training

A Red Hat training course is available for Red Hat Fuse

169.15. 取引消費の有効化

一般的な要件は、トランザクション内のキューから消費し、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 レベルでキャッシュは発生せず、プールされた接続ファクトリーに依存する必要があります。この種のセットアップの詳細については、こちらこちら を参照してください。