2016-05-30 148 views
1

我們運行多個併發RabbitMQ使用者,每個使用者在一個循環中執行「basicGet」。我們看到單個消費者獲得大部分消息。是否有辦法在所有消費者之間更均勻地傳播消息?基本上,我們可以以某種方式中斷服務第一個消費者的RabbitMQ並切換到下一個。注意:我們必須拉消息(basicGet)並且不能切換到推(basicConsume)謝謝。從單個RabbitMQ隊列中併發獲取基本信息

+1

'不能轉推(basicConsume)'我讀過的最悲慘的事情之一今天:) – cantSleepNow

回答

0

設置消費預取限制爲1,並將消費者置於noAck:false模式。

...這可能是AUTOACK:假的,而不是諾亞克...

這將迫使你的消費者一次只檢索1個消息,並需要您手動ACK消息。

有了這兩樣東西,你的信息更均勻地分佈在多個消費者應分配 - 假設你已經在隊列中的多個消息

+0

謝謝。這正是我正在尋找的方向(RabbitMQ接口配置)。只是我不認爲prefetch與basicGet相關 - 這是一個basicCOnsume的事情。現在我需要爲basicGet嘗試「手動」確認它是否有幫助。再次感謝你。 – Ken

+0

我認爲你對預取是正確的,因爲basicGet一次只能抓取一條消息。 :) –