3

私は Tibco MoM で JMS Topic Subscribers について読んでいました (そしてサンプルを実装しました)。これらは私が参照しているリンクです: Link1

ただし、トランザクションが複数のサブスクライバーでどのように管理されるかについては明確ではありませんでした。DefaultMessageListenerContainerコンテナと永続的なサブスクリプションとして使用しています。

通常、onMessageサブスクライバの が完了すると、トランザクションがコミットされます。How does it happen over multiple subscribers?

ここで、Subscriber1 がメッセージを受信し、それに基づいてアクションを処理したとします (アクションを元に戻すことはできません)。その後、Subscriber2 が有効になり、このメッセージを処理しようとしました。問題が発生したため、トランザクションをロールバックする必要があります。メッセージはトピックに戻されます。

次に、Subscriber1 にはメッセージが再び表示されますか? メッセージを再度消費する必要がありますか? これは分散トランザクションの場合ですか? コミットはいつ行われますか?

4

1 に答える 1

2

各サブスクライバーは、独自のトランザクションでメッセージを受信し、トランザクションが正常にコミットされた場合、個々のサブスクライバーはそのメッセージを再び見ることはありません。サブスクライバー トランザクションのロールバックでは、メッセージは失敗したサブスクライバーにのみ再配信されます (ブローカーが再配信を制限していないと仮定します)。

于 2013-02-14T11:59:15.917 に答える