Blu*_*luu 7 producer-consumer amqp rabbitmq consistent-hashing
我有一个生产者,我想通过一致的散列在消费者中一致地分配工作.例如,对于消费者节点X和Y,任务A,B,C应始终转到消费者X,而D,E,F应转到消费者Y.但如果Z加入消费者池,则可能会转移一点.
我不想处理编写自己的逻辑来连接到消费者节点,特别是不管理节点加入和离开池,所以我走了使用RabbitMQ的路径,每个消费者节点都有一个独占队列.
我遇到的一个问题是列出这些队列,因为生产者需要在分配工作之前知道所有可用的队列.AMQP甚至不支持列表队列,这使我不确定我的整个方法.RabbitMQ和Alice(目前已经破碎)添加了这个功能:是否有用于在RabbitMQ上列出队列和交换的API?
这是一个明智的使用兔子?我应该使用消息队列吗?有没有更好的设计,所以队列可以在消费者之间不断分配我的工作,而不是我需要这样做?
你所描述的是RabbitMQ中可以做到的.
您的设置将是这样的:
因此,如果您有6种任务类型:A,B,C,D,E,F,并且只有两个消费者C1和C2,您的绑定将如下所示:C1使用路由密钥A,B和C绑定3次到consistent_divider; C2使用路由密钥D,E和F绑定3次到c_d.
当C3加入池时,生产者会看到这一点并相应地重新绑定队列.
当生产者发布时,它发送带有routing_keys A,B,C,D,E和/或F的消息,消息将被路由到正确的队列.
这有两个潜在的问题:
要回答你的上一个问题,你可能想要使用排队,而RabbitMQ是一个很好的选择,但是你的要求(更确切地说是"一致地划分工作")并不完全适合AMQP.
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |