我意识到我可能做错了 - 但是你有机会纠正我!
我有一个设备 - ID为... 60。 设备60由Master 2处理。
我从设备收到一条消息,并在消息标题中显示其ID。但是在这个阶段,我的程序并不知道,或者关心设备的主控分配。
我想将设备60的所有消息放入名为" Device60"的RabbitMq队列中。此时,没有任何东西可能正在侦听该队列。这就是为什么我不能使用交换b / c,如果什么都没有听,那么消息将被删除。我需要将这些消息保留在Queue60中,直到它们被处理完毕。
当Master 2上线时,它会列出600个将要处理的设备。所以它在那时可以创建绑定。
如何进行队列排队绑定以在" Device60"中分发消息?到了#2; Master2"队列?
如果我接近这一切都错了,请帮助我理解'正确的'基于AMMP的RabbitMq实现的方式
要求是任何设备都可以发送消息,并且它们将按顺序保存,直到某些内容上线并将其拉入。
答案 0 :(得分:1)
您可以使用路由密钥,通过创建交换和绑定到交换机的名为Device60
的队列。
channel.queueBind("Device60","myexchange","device.60")
此时,您可以使用路由键发布消息。 例如:
channel.basicPublish("myexchange","device.60",mymessage);
现在Device60
将收到消息并将其存储,直到消费者在线。
对于其他设备,它是相同的:
channel.queueBind("Device50","myexchange","device.50")
和
channel.basicPublish("myexchange","device.50",mymessage);
我希望它有所帮助。