2

2 つのデータベースを使用する Spring Batch アプリケーションがあります。1 つはジョブ リポジトリ、およびビジネス データを含むデータベース用です。現時点では、これらのデータソースに 2 つの異なるトランザクション マネージャーを使用していますが、私の会社の何人かは、単一の JTA TransactionManager (XA を使用) を使用することを提案しています。これは本当に正しいですか?ビジネス データベースへのトランザクションが失敗した場合、これはジョブ リポジトリへの更新もロールバックされることを意味しますか? これはおそらく望ましくありません。このようなシナリオでのベスト プラクティスは何ですか?

4

2 に答える 2

1

私見ですが、JTA を使用して 2 つのデータソースを結び付けることは適切な選択ではありません。ビジネス トランザクションがロールバックされた場合、この時点で JTA が有効になっていると、Spring バッチ トランザクションをコミットできず、Spring バッチ データベースでバッチの現在の状態を更新できないと想像してください。

ただし、ビジネス トランザクションを強制的にロールバックして、影響を確認することはできます。

それが役に立てば幸い。

于 2016-01-06T16:58:50.973 に答える
0

2 つの異なるデータ ソースの場合は、XADataSource と Atomikos などのトランザクション マネージャーを使用する方がよいでしょう。ただし、入力に基づいて、ジョブ リポジトリは状態管理戦略であるため、2 つのデータ ソースが単一のトランザクション マネージャーの下にある必要はありません。おそらく、2 つの異なるトランザクション マネージャーを配線することをお勧めします。Spring Forums のこちらのリンクを確認してください: 2 Datasources

于 2016-01-07T17:40:29.503 に答える