【问题标题】:RabbitMQ Non-Round Robin DispatchingRabbitMQ 非循环调度
【发布时间】:2014-05-05 16:05:29
【问题描述】:

我对在 RabbitMQ 中实现“工作队列”模型很感兴趣。但是,我发现代理会执行基于循环的简单任务分派给工人。

https://www.rabbitmq.com/tutorials/tutorial-two-java.html

如果某个特定的工作人员正忙于执行一项非常繁重的任务并且有其他空闲工作人员,则代理应该能够将队列中的消息分派给下一个可用的工作人员而不是下一个 循环序列中的工人。有没有办法使用 RabbitMQ 来完成这个?

【问题讨论】:

    标签: rabbitmq message-queue rpc distributed-computing amqp


    【解决方案1】:

    也许您正在寻找基于 QoS 的公平调度 (https://www.rabbitmq.com/tutorials/tutorial-two-java.html)。

    channel.basicQos(1);
    

    使用 QoS(1) 一个消费者很忙,直到没有发送ACK,在这种情况下,另一条消息被发送给下一个空闲消费者。

    因此,如果消费者有很长的流程要做,它就不会收到消息。

    如果没有空闲的消费者,消息将保留在队列中。

    【讨论】:

    • 感谢您的回复。是的,我正在寻找类似 Fair dispatch 之类的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多