1

私は Spring Integration を初めて使用し、メッセージのポーラーとトランザクション サポートを max-messages-per-poll 値と組み合わせて使用​​することに関して質問がありました。

以下の構成でポーラーを使用する場合

<int:poller fixed-delay="1000" max-messages-per-poll="10">
    <int:transactional transaction-manager="SomeDatabaseTransactionManager"/>
</int:poller>

ドキュメントには、ポーリング タスクがポーリングごとに (または null が受信されるまで) 10 個のメッセージを生成することが記載されています。

各メッセージは独自のトランザクション境界で実行されますか? つまり、1 つのメッセージがトランザクション境界の終わりに到達できなかった場合、失敗したメッセージに対してのみロールバックが発生しますか? それとも、ポーリングの一部であった 10 個のメッセージすべてがロールバックされますか?

ありがとうRC

初歩的な質問で失礼します。

4

1 に答える 1

2

数週間前にSpring Forumsで同様の質問に答えました...

つまり、各メッセージは 1 つのトランザクション内で処理されます。これはmax-messages-per-poll単に、ポーラー スレッドが (独自のトランザクションで現在のメッセージを処理した後) mmpp に到達するまで、次のポーリングを待つのではなく、新しいメッセージの処理をすぐに試行することを意味します。

于 2013-10-01T01:17:13.457 に答える