2

我正在使用發佈者/訂閱者模型,在該模型中使用JMSTemplate將消息發佈到主題上。我使用defaultmessagelistenercontainer來訂閱和接收消息。Setsessiontransacted如何在JMSTemplate和DefaultMessageListenerContainer與Pub /子模型中工作

我知道我可以在兩個配置中設置sessionTransacted true。但如果我把

會發生什麼情況1)只有JMSTemplate setsessionTransacted爲true?

2)only messagelistenercontainer setsessiontransacted true?

3)JMSTemplate和messagelistenercontainer setsession的傳遞是否正確?

我只是想知道這三件事之間的區別,就消息被髮送給接收消息的主題和訂閱者以及執行所需的工作而言。我想要了解的核心問題是

會話持續了多長時間才能涵蓋這些內容?

消息被髮送到主題和訂戶接收到該消息並執行與它

回答

0

這些交易是分開的所需要的工作。在發送提交之前,消費者不會收到消息。

如果您在同一個線程上使用消息併發送另一個消息,並且兩者都進行了事務處理,它們都將以相同的傳輸方式運行。

+0

所以從我所瞭解的jmsTemplate和DMLC事務是分開的。 – africandrogba

+0

所以從我的理解,jmsTemplate和DMLC交易是分開的。因此,如果我的DMLC sessiontransaction設置爲true,則onMessage()方法中的所有代碼都將在事務中完成。如果我的onMessage()中發生異常,會發生什麼情況。信息是否會被我的聽衆重新發送,再次發生? – africandrogba

+0

我正在使用一個主題不是隊列 – africandrogba