阅读常见消息队列系统(例如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