2012-05-31 77 views
1

如何讓我的競爭消費者完全動態?
駱駝實現是要求併發消費者的價值。但是讓我們假設一個新的消費者啓動並開始使用發送者消息。那麼我該如何保持併發消費者的數量呢?使用駱駝實現競爭消費者模式

+0

活躍的消費者總數閱讀你已經張貼在這裏的幾個相關問題後,它可能有助於明確定義您的用例。你所要求的是可能的,但需要付出一些努力,所以可能會說明你正在努力完成的工作將會幫助你更快地找到解決方案。 :) – sully6768

+1

另外,concurrentConsumers只是在初始化時創建的最小用戶數。將maxConcurrentConsumers設置爲與concurrentConsumers相同將給你一個常量。但這不是「動態」。 – sully6768

回答

2

我會假設你正在談論JMS消費者...

如果是這樣,你可以設置concurrentConsumers & maxConcurrentConsumers,讓消費者主動線程增長的數量/收縮根據需求。像這樣將設置一個明確的路線...

from("activemq:queue:input?concurrentConsumers=1&maxConcurrentConsumers=5") 
.to("log:+++consumed+++"); 

這麼說,如果你有其他途徑(或非航線消費者喜歡春天JMSTemplates等),其開始從同一資源(輸入隊列)消耗,那麼總消費者的數量可以去高得多......

您可以隨時查看在AMQ Web控制檯或通過JMX

+0

儘管如果您希望消費者在負載不高時收縮的數字,則還必須設置'maxMessagesPerTask'屬性。正如[在這裏的文檔中]所述[http://camel.apache.org/jms.html]: 'maxMessagesPerTask'選項必須設置爲大於0的整數,以便線程縮小。否則,線程數將停留在maxConcurrentConsumers直到關閉。 – Innokenty