我通过 AMQPLib 和 RabbitMQ Bundle(用于 Symfony)在 PHP 中使用 RabbitMQ。
消费者在多台服务器上工作,这就是 Rabbit 的用途,这很好。但是,我遇到了一个特定情况,我想分批阅读消息,并且我希望只有一个消费者同时工作。但为了实现高可用性,我希望其他消费者(来自其他服务器)作为后备。
我的理解是:
- 有一个批量消费选项,但正如我注意到的那样,它并不能保证我连续收到一批消息。
- Rabbit 消费命令上有
exclusive
标志——不幸的是,Rabbit 包没有公开它;此外,如果队列中有一个独占消费者,则另一个退出并出现我无法使用 BatchConsumerInterface 处理的异常
我错过了什么吗?是否有一些内置的解决方案可以让我实现我上面描述的内容?无需编写绕过 RabbitMQ Bundle 的复杂解决方案?