Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.140.5. トランザクションサポート
BAPI トランザクションモデル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
SAP コンポーネントは、SAP とのアウトバウンド通信用の BAPI トランザクションモデルをサポートします。transacted オプションが
true
に設定された URL を持つ宛先エンドポイントは、必要な場合は、エンドポイントのアウトバウンド接続でステートフルセッションを開始し、Camel Synchronization オブジェクトをエクスチェンジに登録します。この同期オブジェクトは BAPI サービスメソッド BAPI_TRANSACTION_COMMIT
を呼び出して、メッセージ交換の処理が完了するとステートフルセッションを終了します。メッセージ交換の処理に失敗すると、同期オブジェクトは BAPI サーバーメソッド BAPI_TRANSACTION_ROLLBACK
を呼び出してステートフルセッションを終了します。
RFC トランザクションモデル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
tRFC プロトコルは、AT-MOST-ONCE 配信を実行し、各トランザクション識別子(TID)でトランザクション要求を識別することで保証を行います。TID には、プロトコルで送信される各リクエストが含まれます。tRFC プロトコルを使用する送信アプリケーションは、要求の送信時に一意の TID を持つリクエストの各インスタンスを特定する必要があります。アプリケーションは指定の TID でリクエストを複数回送信できますが、プロトコルにより、要求が最大 1 度受信システムで配信および処理されます。アプリケーションは、要求の送信時に通信またはシステムエラーが発生した場合に特定の TID でリクエストを再送信することを選択する可能性があるため、その要求が受信システムで配信および処理されたかどうかが疑われます。通信エラーの発生時にリクエストを再送信することで、tRFC プロトコルを使用するクライアントアプリケーションは、EXACTLY-ONCE 配信を保証し、その要求の保証を処理することができます。
使用するトランザクションモデル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
BAPI トランザクションはアプリケーションレベルのトランザクションです。これは、SAP データベースの BAPI メソッドまたは RFC 関数によって実行される永続データ変更に対して ACID 保証を課すという意味です。RFC トランザクションは通信トランザクションであり、BAPI メソッドおよび RFC 関数への要求に対する配信保証(AT-MOST-ONCE、EXACTLY-ONCE、EXACTLY-ONCE-IN-ORDER)を課します。
トランザクション RFC 宛先エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の宛先エンドポイントは RFC トランザクションをサポートします。
sap-trfc-destination
sap-qrfc-destination
単一の Camel ルートには、複数のトランザクション RFC 宛先エンドポイントを含めることができ、複数の RFC 宛先にメッセージを送信したり、同じ RFC 宛先にメッセージを送信したりすることもできます。これは、Camel SAP コンポーネントが、ルートに渡される
Exchange
オブジェクトごとに 多数 のトランザクション ID (TID)を追跡する必要があることを意味します。ルート処理に失敗し、再試行する必要がある場合、状況はかなり複雑になります。RFC トランザクションセマンティクスでは、ルートを介した各 RFC 宛先が、最初に使用されたのと 同じ TID を使用して呼び出す必要があります(および各宛先の TID が相互に区別されます)。つまり、Camel SAP コンポーネントは、ルートにどの TID が使用されたかを追跡し、TID が正しい順序で再生できるようにこの情報を覚えておく必要があります。
デフォルトでは、Camel は
Exchange
がルート内の場所を認識できるようにするメカニズムを提供しません。このようなメカニズムを提供するには、CurrentProcessorDefinitionInterceptStrategy
インターセプターを Camel ランタイムにインストールする必要があります。Camel SAP コンポーネントがルート内の TID を追跡するには、このインターセプターを Camel ランタイムにインストールする必要があります。インターセプターの設定方法の詳細は、「tRFC および qRFC 宛先のインターセプター」 を参照してください。
トランザクション RFC サーバーエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のサーバーエンドポイントは RFC トランザクションをサポートします。
sap-trfc-server
トランザクションリクエストを処理する Camel エクスチェンジで処理エラーが発生すると、Camel は標準のエラー処理メカニズムを介して処理エラーを処理します。Camel ルートの処理が、エラーを呼び出し元に伝播するように設定されている場合、エクスチェンジを開始した SAP サーバーエンドポイントは失敗を認識し、送信している SAP システムにエラーが送信されます。送信元の SAP システムは、同じ TID で別のトランザクションリクエストを送信して再度要求を処理することで応答できます。