2013-02-14 75 views
2

我正在閱讀關於Tibco MoM的JMS主題訂戶(並已實施樣例)。這些是我指的鏈接:Link1針對某個主題的多個持久訂閱者的交易管理

但是,我不清楚交易將如何管理多個用戶。 我使用DefaultMessageListenerContainer作爲Container和持久訂閱。

通常,當用戶的onMessage完成時,交易將被提交。 How does it happen over multiple subscribers?

現在,假設Subscriber1收到消息並根據它處理一個動作(該動作不能顛倒)。稍後的Subscriber2還活着,試圖處理這個消息。出錯了,現在事務必須回滾 - 消息將被放回到主題中。

10接下來,Subscriber1會再次看到消息嗎?它將不得不再次消費該消息嗎?這是分佈式事務的情況嗎?什麼時候發生?

回答

1

每個用戶在自己的交易中收到其消息,並提供交易成功提交,單個用戶將不會再看到該消息。在訂戶交易回滾時,該消息將僅被重新發送給發生故障的訂戶(假設代理不限制重新交付)。

+0

謝謝尼古拉斯。何時從主題中刪除該消息?用什麼機制來跟蹤?通常在Queue中,只要消費者Listener提交'consume/onMessage'事務,消息就會被刪除。 – 2013-02-14 13:32:26

+1

代理負責保留消息,直到消息發送到所有連接的非持久訂閱者以及消息發佈時訂閱的所有持久訂閱者。不同的實施方式在完成方式上有所不同,並且如果消息具有指定的生存時間,則代理可以在消息過期後丟棄該消息,而不管它是否已經被所有訂戶接收。 – Nicholas 2013-02-14 14:00:14