我有以下场景:
我的方法:
问题:
交换机在所有消费者正在消费的“newProduct”队列中发送新产品作业。
这对我来说很好看。
读取此类消息的消费者y通知生产者服务(在单独的队列中)他现在负责产品x。这也没关系,我想如果生产者没有收到产品X被处理的通知,它将需要做一些事情。然后,生产者将产品x的所有消息发送到适合消费者y的队列。
我会使用相同的路由密钥发送产品X的所有消息,例如product-X
。这就是你在这里的意思。我要避免告诉制作人谁现在正确处理产品-X。为了更好地分离关注点和简单性,生产者应尽可能少地了解消费者及其队列,反之亦然。
当新的消费者服务z上线时,它通知特定队列中的生产者服务他在线,以便生产者可以在交换中为z的正确队列创建绑定。
你可以这样做,但我会做不同的事情:
当消费者上线时,它将自己创建所需的队列(或订阅现有队列)。
我觉得这样:
product-Z
为自己创建一个新队列product-Z
发送消息,并且它们最终进入消费者队列。确保您的消费者具有一定的高可用性,否则当您的消费者开始处理某些消息然后已经死亡时,您可能会遇到这种情况,而生产商正在继续为现在未处理的产品发送消息。