RabbitMq:具有直接绑定的动态使用者数
我有以下情况:RabbitMq:具有直接绑定的动态使用者数,rabbitmq,messaging,messagebroker,Rabbitmq,Messaging,Messagebroker,我有以下情况: 一种生产性服务 消费者服务的动态数量 消息包含特定产品的任务,因此一旦消费者x处理产品y的消息。将来x应该处理产品y的所有消息。理想情况下,生产者服务应该在只有消费者x读取的队列上发送产品x的所有消息 为了平均分配工作负载,应该有一种方法,一旦需要管理一个新产品,下一个可用的消费者就会接受它。(我假设一个所有消费者都在读取的队列) 我的做法: exchange在“newProduct”队列中发送新产品作业,所有消费者都从该队列中消费 读取此类消息的消费者y通知生产者服务(
- 一种生产性服务
- 消费者服务的动态数量
- 消息包含特定产品的任务,因此一旦消费者x处理产品y的消息。将来x应该处理产品y的所有消息。理想情况下,生产者服务应该在只有消费者x读取的队列上发送产品x的所有消息
- 为了平均分配工作负载,应该有一种方法,一旦需要管理一个新产品,下一个可用的消费者就会接受它。(我假设一个所有消费者都在读取的队列)
我的做法:
- exchange在“newProduct”队列中发送新产品作业,所有消费者都从该队列中消费
- 读取此类消息的消费者y通知生产者服务(在单独的队列中),他现在负责产品x
- 然后,生产者将产品x的所有消息发送到消费者y的队列
- 当新的消费者服务z联机时,它会通知特定队列上的生产者服务他已联机,以便生产者可以在exchange for z的适当队列中创建绑定
问题:
- 我的方法是解决问题的好方法,还是我缺少了能够以较不复杂的方式解决问题的rabbitmq解决方案?
- 如何在运行时将新队列添加到exchange
product-X
。这可能就是你在这里的意思。我会避免告诉制作人谁现在正处理产品-X。为了更好地分离关注点和简化,生产者应该尽可能少地了解消费者及其队列,反之亦然
当新的消费者服务z上线时,它会通知制作人
因此,他在线的特定队列上的服务
生产者可以在exchange for z的适当队列中创建绑定
你可以这样做,但我会做得不同:
当消费者联机时,它将自己创建所需的队列(或订阅现有队列)
我是这样看的:
- 消费者在线并订阅新产品队列
- 收到处理产品Z的消息时:
- 使用绑定键为自身创建新队列
product-Z
- 通知生产商产品Z正在处理中
- 生产者开始使用路由键
发送消息,并最终进入消费者队列product-Z