閱讀常見消息隊列系統(例如RabbitMQ,ActiveMQ)的文檔,似乎負載平衡總是由排隊系統(循環)或由生產者使用多個隊列完成或消息屬性。然而,在我們的應用程序中,沒有人,甚至沒有消費者知道處理消息需要多長時間。它可以在幾毫秒到幾小時之間(它基本上是在任意輸入x上計算任意函數f)。因此負載平衡應由消費者執行,因爲它們只在「負載」低於閾值時才接受消息(負載可以是執行作業的數量,CPU負載等)。理想情況下,生產者將消息放入隊列中,消息被「提供」給所有消費者,但只有一個消費者接受並處理消息。甚至可能發生的情況是,沒有消費者在第一輪接受它,並且在一個消費者擁有免費資源之前它會一直處於隊列中。 所以可能的問題是:這在某種程度上可能與任何常見的消息隊列系統是可能的,還是我們正在尋找錯誤的方向?基於消費者負載均衡的消息隊列
1
A
回答
0
這是可以實現的,沒有任何真正的額外工作,只是由於這些系統的性質。在RabbitMQ中,您可以設置一個prefetch size,它指定要提前提取的作業數量。您將其設置爲0,以便每個消費者一次只能有一份工作。您希望將其與消息確認結合使用,以便消費者在提供消息之前必須先回復消息。
所有閒置的使用者將排隊等待作業,並且MQ將按FIFO順序將作業推遲給他們。一旦他們完成了處理他們的工作,他們就會確認並且MQ給他們下一份工作。如果沒有消費者閒置並準備好工作,則該消息位於隊列中,直到消費者變得可用。
相關問題
- 1. 消費羣體負載均衡讀者
- 2. Qpid - 負載均衡的消息對消費者有不同的性能特點
- 3. JMS - 消費者在消費之前瀏覽隊列消息
- 4. Azure工作者角色+消息隊列消費者的數量
- 5. 消費者過濾的生產者 - 消費者阻塞隊列
- 6. RabbitMQ從多個消費者隊列序列化消息
- 7. 基於IP的Nginx負載均衡
- 8. 延遲向消費者提供消費隊列中的消息:Weblogic
- 9. 隊列消息/消費者組的工作流程?
- 10. 當消費者未確認消息時,ActiveMQ停止向隊列消費者發送消息
- 11. 當多個MessageConsumer連接到相同的隊列(Websphere MQ)時,如何負載均衡消息使用者?
- 12. 消息在虛擬主題不是由消費者隊列
- 13. 單隊列:多個消費者同時處理消息
- 14. JBoss消息隊列卡住,遠程接口和MDB消費者
- 15. SQS隊列並行處理消息使用sqs消費者nodejs
- 16. 生產者/消費者工作隊列
- 17. 生產者消費者阻止隊列
- 18. Apache Kafka - 消費者之間僅消耗特定分區的負載平衡
- 19. 消息消費者實現
- 20. ActiveMQ消息組和負載平衡?
- 21. 不同語言的生產者和消費者的Redis消息隊列
- 22. ActiveMQ - 消費者不共享負載
- 23. 生產者 - 消費者多個生產者多個隊列單個消費者
- 24. 負載均衡
- 25. 使用MSMQ隊列來分離消息生產者和消費者?
- 26. Boost消息隊列不基於POSIX消息隊列?不可能選擇(2)?
- 27. 多個消費者一個隊列
- 28. AMQP - 隊列中有多少消費者?
- 29. 基於多線程的RabbitMQ消費者
- 30. 雙排隊的消費者生產者
謝謝,這聽起來很完美。我會試一試。 – sithmein