2014-06-05 36 views
0

我需要設置一個解決方案來通過ActiveMQ NMS使用消息,僅限於在JMS頭(CUstom屬性)中包含特定值的包含特定值的包含特定值的Queued消息。實際解決方案使用簡單的consumer.Listener + = ...事件。但是如果我理解Listener是正確的,那麼消息也將被消耗。 如果我使用瀏覽器我必須做我自己的投票,我需要爲此設置一個循環?c#activeMQ隊列監聽器僅適用於具有特定屬性的郵件

有沒有辦法讓每一條消息到達隊列並且不會消耗它。但看看JMS標題,並決定是否消耗。

背景是所有來自不同版本的消息DataGenerators會將數據放在同一個隊列中,並且它們應該擁有不同的消費者,這取決於JMS頭中的一些字段。沒有選擇可以改變(商業限制)。

我希望你能幫助我。

+0

我對ActiveMQ並不熟悉,但是大多數MQ框架都提供了對隊列上的消息進行峯值處理的設施,這些消息不會將它們從隊列中刪除。這是你的選擇嗎? –

+0

如果我正確地理解了Peak,它需要從循環中的代碼中調用。我的問題是,我不想每隔x秒做一次民意調查。我喜歡使用基於事件的監聽器系統。在那裏我得到消息,如果消息到達,而不是輪詢並詢問服務器的消息。因爲在幾個小時之後,隊列可以長大,而不是通過輪詢/通過,所有的消息都不會那麼好。 – Vampirasu

回答

0

聽起來像你想用message selector訂閱。您可以在創建消費者期間傳遞選擇器,並且消費者將只接收符合選擇器條件的消息。沒有問題域的進一步細分是最好的建議。

+0

謝謝!這是我的問題的解決方案 – Vampirasu