2016-06-26 6 views
0

私は1つのセッション、1つの非同期MessageListenerを使用してメッセージを受信し、スレッド内の各メッセージを処理します。スレッドが完了すると、セッションのコミットまたはロールバックが使用され、メッセージが再配信されるかどうかが決定されます。しかし、私は本当にコミット/ロールバックステートメントがスレッドで処理しているメッセージに何らかの影響を及ぼす可能性があることを心配しています。たとえば、JMSトランザクションセッション:特定のメッセージのコミット/ロールバック

1 session 
1 msg listener 

---TIME----> 
[MSG1: receive] --------------- processing -----------------> [MSG1: rollback] 
       [MSG2: receive] --------------> [MSG2: commit] 


- At the time MSG2 commit, may be MSG1 also be committed? 
If it is right, can I execute commit/rollback for specific MSG only? 

答えて

0

あなたはコードを共有していませんが、私は答えようとします。

まず、これは、

セッションがコミットまたはロールバックが を再配信することができ、メッセージを決定するために使用されますか

私が思うに、あなたがメッセージを使用すべきではない良い戦略をいないようです承認モードで再配信を決定します。必要に応じてメッセージに適切な確認モードを設定します。

第2に、JMS Sessionトランザクションであるスレッドが混在しているようです。単一のJMSメッセージであるcommitまたはrollbackには、単一のJMSメッセージに対してセッションを処理する必要があります。

Transacted Session

ので、私は推測する、一つのメッセージのためのあなたのcommitrollbackは、他のメッセージに影響を与えますか、あなたのスレッドには依存しませんが、あなたは、トランザクションを定義し、どのように多くのメッセージがトランザクションを構成する方法(つまり、どのようにトランザクションスコープが設定されています)。

そのSessioncommitrollbackないMessagecommitrollback

希望すると助かります!

関連する問題