2014-12-05 172 views
1


我仍然在學習這個activemq和jms的東西。 我已經嘗試過一些例子,現在我可以產生和使用來自隊列/主題的消息。

現在我有一個問題,當我的客戶端/客戶端丟失連接時,隊列/主題中的消息仍然發出該消息,該消息將丟失並且不保留在隊列/主題中。所以我的問題是我如何能夠保留這個失敗的消息,以及如何讓代理重新發送該消息?

感謝ActiveMQ如何保持未能發送給消費者隊列/主題的消息?

回答

3

您術語混合了一點事情。

隊列將持有消息直到消耗或代理重新啓動,除非該消息已被標記爲持久性,在這種情況下,即使在代理重新啓動後,它們也會一直存在。

主題只將當前消息傳遞給任何當前訂閱者。但是,您可以使用幾種方法持久發佈到主題的郵件:

  1. 持久訂閱者。
  2. Virtual Destinations

虛擬主題通常比持久訂閱者更受歡迎,但它實際上取決於用例。

你如何創建一個持久訂閱者取決於你用來創建訂閱者(Spring,POJO,一些其他的API?)。所有的方法都會在某個時候調用Session.createDurableSubscriber方法,但我建議閱讀它們在通過虛擬主題或複合隊列選擇之前的行爲方式。

+0

謝謝。那麼,我怎樣才能讓諸如從經紀人到消費者的「保證交貨」? – 2014-12-09 16:36:32

+0

確保它是作爲持久性消息生成的。此外,你會想看看某種形式的客戶端確認或交易。 – 2014-12-17 14:26:44

相關問題