RabbitMq 绑定

RabbitMq bindings

我意识到我可能做错了 - 但这是你纠正我的机会!

我有一个设备 - id 为... 60。 设备 60 由 Master 2 处理。

我从设备收到一条消息,消息头中是它的 ID。但在这个阶段,我的程序不知道,也不关心设备分配给哪个主设备。

我想将设备 60 的所有消息放入名为 "Device60" 的 RabbitMq 队列中,此时可能没有任何内容在监听该队列。这就是为什么我不能使用 exchange b/c 的原因,如果没有任何内容在监听,那么消息就会被丢弃。我需要将消息保留在 Queue60 中,直到它们被处理。

当 Master 2 上线时,它有一个列表,其中包含它将处理的 600 个设备。所以它在那个时候可以创建绑定。

如何执行队列到队列绑定以将 "Device60" 中的消息分发到 "Master2" 队列?

如果我处理这一切都是错误的,请帮助我理解基于 AMQP 的 RabbitMq 实现的 'correct' 方法

要求是任何设备都可以发送消息,并且它们将按顺序保存,直到有东西上线并将它们拉入。

您可以使用路由键,方法是创建一个交换器和一个名为 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);

希望对您有所帮助。