我有以下场景:
我的方法:
问题:
交换发送“NewProduct”队列中的新产品作业,所有使用者都从该队列中消费。
我觉得这个不错。
读取这样一条消息的消费者y通知生产者服务(在一个单独的队列上)他现在负责产品X。这也是好的,我猜如果生产者没有收到通知,产品X被照顾,它将需要做一些事情。然后,生产者将产品x的所有消息发送到消费者Y的队列。
我将使用相同的路由密钥发送产品X的所有消息,如product-x
。你大概就是这个意思。我会避免告诉producer现在是谁来具体处理产品-X的。为了更好地分离关注点和简单性,生产者应该尽可能少地了解消费者及其队列,反之亦然。
当一个新的消费者服务z上线时,它会通知特定队列上的生产者服务他在线了,这样生产者就可以在交换中为z的正确队列创建绑定。
你可以这样做,但我会用不同的方法:
当consumer上线时,它将自己创建所需队列(或订阅现有队列)。
我是这样看的:
product-z
product-z
的消息,这些消息最终进入使用者的队列。请确保您的消费者具有一些高可用性,否则您可能会出现这样的情况:消费者开始处理某些消息,然后就死了,而producer则继续为现在未处理的产品发送消息。