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