【发布时间】:2020-05-29 20:40:27
【问题描述】:
我有一个 RabbitMQ,多个消费者订阅了一个队列。而且我希望具有相同哈希键的消息每次都可以被同一个消费者消费。我知道 RabbitMQ 的默认行为是遍历所有消费者并逐个发送消息。
有没有和Kafka partition一样的能力?
谢谢
【问题讨论】:
标签: rabbitmq
我有一个 RabbitMQ,多个消费者订阅了一个队列。而且我希望具有相同哈希键的消息每次都可以被同一个消费者消费。我知道 RabbitMQ 的默认行为是遍历所有消费者并逐个发送消息。
有没有和Kafka partition一样的能力?
谢谢
【问题讨论】:
标签: rabbitmq
嗯,不完全是,但非常接近。
您需要使用 RabbitMQ 一致性哈希交换类型,可通过添加 rabbitmq-consistent-hash-exchange plugin 获得。它将一致性哈希交换类型添加到 RabbitMQ。这种交换类型使用一致的散列在绑定队列之间分发消息。建议在评估此插件及其替代品之前对该概念有一个基本的了解。
【讨论】:
Rebalancer(从 Jack Vanlightly 派生并改进)
在其他技术中创建 Kafka 风格的消费者群体。 Rebalancer 的诞生源于对 RabbitMQ 消费者组的需求。但是 Rebalancer 完全与技术无关,它将在一组参与节点上平衡任何资源组的活动。 用例 使用 RabbitMQ、SQS 等消息传递技术创建类似于 Kafka 的“消费者组”。 在横向扩展应用程序的实例之间使用一组资源,例如文件共享、FTP、S3 存储桶。 单个活动消费者/活动备份 创建一个以高可用方式消耗单个资源的应用程序集群。集群领导者(Coordinator)消耗单一资源,而从属者(Followers)保持空闲备用,以防领导者死亡。
【讨论】: