簡體   English   中英

ActiveMQ:消費者一旦被選擇處理特定的消息組,就不會收到非分組的消息

[英]ActiveMQ: consumer not getting non-grouped messages once it is selected to handle a specific message group

我們正在使用 ActiveMQ (5.14.5)。 我們有一個生產者,在同一個隊列中有多個消費者。 我們有時會設置 JMSXGroupID 來將多個消息組合在一起,以便在單個消費者上使用。 這按預期工作。 同時,生產者繼續發送非分組消息(即沒有 JMSXGroupID)

問題:我們注意到,一旦選擇了一個消費者來處理特定的組,它就不再獲得非分組的消息。 即使它完全閑置。 未分組的消息總是發送給其他消費者。 只有在我們關閉分配給它的組(通過設置 JMSXGroupSeq=-1)后,流氓消費者才會返回使用未分組的消息。

這是正常行為嗎? 我們預計非分組消息將繼續以與往常相同的循環方式傳遞給所有消費者。 我們無法在 ActiveMQ 文檔中找到對此的明確引用。

對於消息代理來說,這里有一些雙贏的局面。 如果有活動的消息組在起作用,則代理必須假設將生成更多屬於這些組的消息。 因此,已綁定到特定組的消息消費者需要對該組的消費者后續消息保持可用,而不是未分組的消息。 畢竟,未分組的消息可以在其他地方處理,而分組的消息則不能。

但是,我們也希望在消費者之間公平地分配消息。 因此,綁定到一個或多個組的消費者在空閑時可以做一些工作是有道理的。

但是我們怎么知道它是空閑的呢? 如果消費者接受一堆未分組的消息(並且不要忘記默認的預取行為),然后新消息到達匹配其特定組,會發生什么?

關閉群組會將“群組消費者”恢復為默認行為這一事實向我表明,這不是錯誤,而是在棘手情況下故意做出合理妥協的嘗試。 對我來說,要求添加一項功能似乎是合理的,其中“組消費者”可以參與未分組的工作負載,但我傾向於將其視為增強功能。

當然只是我的 0.02 美元。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM