我想在多个使用者之间分配来自RabbitMQ队列的消息(每个消息仅由一个消费者处理),并且能够在运行时添加/删除使用者 .

这就是RabbitMQ开箱即用的 - 如果你将多个消费者连接到同一个队列,消息会自动分发,到目前为止还是不错的 .

现在,我需要通过RabbitMQ(20-50Mb)处理大量消息 . 根据我的经验和我在互联网上发现的内容,RabbitMQ不能很好地处理大型消息,因此建议将它们拆分为块并在消费者中重新组装(例如https://dotnetcodr.com/2014/06/12/rabbitmq-in-net-handling-large-messages/) .

我实现了拆分/重组逻辑,并立即意识到多个消费者可以连接到同一队列以负载 balancer 消息的设计不再起作用 . 原因很明显 - 同一个大消息的块被分发给多个消费者,并且它们都不能重新组装整个原始消息(因为它只有部分块) .

所以问题是 - 有没有办法告诉RabbitMQ,有些消息代表一个必须传递给同一个消费者的序列?可能是邮件中的某些服务 Headers 还是什么?

如果没有,您会向我建议哪些设计更改,以便我仍然能够横向扩展消费者?现在我唯一的想法是创建一组独特的队列并向 生产环境 者添加分配逻辑 - 但这意味着要么是一组固定的消费者,要么是消费者和 生产环境 者之间的某种同步,我想避免这种情况 .