【问题标题】:Is There a Way to Limit the Number of Consumers on a RabbitMQ Queue?有没有办法限制 RabbitMQ 队列上的消费者数量?
【发布时间】:2017-12-29 10:02:32
【问题描述】:

我有一个带有很多队列的 RabbitMQ 设置。由于每个队列中数据的性质,必须严格按顺序处理,因此每个队列只能允许单个消费者。这本身不是问题,但我们确实冒着意外在队列中启动第二个消费者的风险,这将是一件坏事。有很多队列和很多应用服务器,我们只需要一个小错字就可以结束这种情况。

在我花时间更改软件以有效地“锁定”队列(将该锁定存储在数据库或其他东西中)之前,RabbitMQ 中是否有任何东西可以限制队列可以拥有的消费者数量?如果是这样,我可以将队列限制为只有一个消费者,而我的多个消费者风险就消失了。

干杯!

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    consume 方法中的 exclusive 标志用于此目的。

    【讨论】:

    • 谢谢,太好了。很明显,现在我实际上正在查看“消费”方法!
    【解决方案2】:

    如果您使用sprig framework,您可以在标签兔子监听器@RabbitListener 中使用标签exclusive=true。因此,您可以将队列限制为一个消费者。

    @RabbitListener(queues = "${queue.name}", exclusive = true)

    【讨论】:

      【解决方案3】:

      我迟到了,但对于任何可能遇到这种情况的人 - 如果您只需要一个活跃的消费者,您可以使用新功能(自 3.8 起)-https://www.rabbitmq.com/consumers.html#single-active-consumer

      单一活跃消费者

      单个活跃消费者允许一次只有一个消费者 从队列中消费并故障转移到另一个注册的消费者 以防激活的被取消或死亡。

      【讨论】:

        猜你喜欢
        • 2017-12-02
        • 1970-01-01
        • 2020-09-20
        • 2016-01-12
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        相关资源
        最近更新 更多