2016-06-26 82 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

您還沒有分享過任何代碼,但我會盡力回答。

首先,這似乎不是一個很好的策略,

會議提交或回滾將被用於決定消息可以 交還或不

我想,你應該使用消息確認模式來決定重新交付。根據需要在消息中設置適當的確認模式。其次,你似乎是混合存在與JMS Session線程交易或不。若要單個JMS消息爲commitrollback,則需要爲您的會話處理單個JMS消息。

Transacted Session

,所以我想,你commitrollback一個消息影響其他消息與否不取決於你的線程,但你如何定義一個事務,多少消息構成一個交易(即如何交易是有作用域的)。

它是一種SessioncommitrollbackMessagecommitrollback

希望它有幫助!