2012-02-02 87 views
6

我目前正在使用hazelcast編寫一個分佈式系統。關於使用hazelcast實現的隊列,我有幾個問題。Hazelcast隊列信息

  1. 什麼是從隊列處理數據的最佳方法?我目前每個「節點」上都有線程讀取處理數據的阻塞隊列。這是正確的還是有一些我不知道的類,像JMS或messageListener照顧這個?
  2. 我看到有一個time-to-live-seconds設置,它將在隊列過期後從隊列中刪除條目。我的問題是......有什麼方法可以檢測到從隊列中刪除已過期的項目嗎?我知道有聽衆,但這並沒有幫助,因爲這是在所有的「節點」而不是僅僅一個。我正在尋找一種爲每個過期消息執行代碼的方法(類似於死信隊列)。

任何意見或建議,將不勝感激。

感謝

回答

9
  1. 有目前沒有其他辦法。所以你將在每個節點上調用queue.take()。 Hazelcast團隊計劃添加IQueue.addQueueConsumer(QueueConsumer),其行爲類似於JMS MessageListener

  2. 你說得對。添加監聽器並不是很好的做法,因爲這是非常昂貴的操作。您可能想要在http://code.google.com/p/hazelcast/issues處爲此創建問題。有功能的確很好。

-talip @ hazelcast

+0

謝謝您的回覆! – Paul 2012-02-02 09:50:06

+1

只是好奇,如果這些項目之一已被解決自2012年以來。 – Snekse 2015-06-04 15:15:52

+1

nope,addQueueConsumer仍然失蹤:http://docs.hazelcast.org/docs/3.6/javadoc/com/hazelcast/core/IQueue.html – 2016-07-08 15:48:27