我想弄清楚,如果可以在RabbitMQ中使用一些默认的路由方案/交换来实现以下目的:
我有一些设备和设备组的基本层次结构,其中设备始终属于一个组。
group_a
device_1 (queue: group_a.device_1)
device_2 (queue: group_a.device_2)
理想情况下,我希望每个群组都有一个制作人(例如group_a
),以保持连接和频道畅通。然后,当需要将消息发布到该组的设备(例如device_1
)时,生产者将该消息发送到具有设备名称作为路由密钥的预定义交换。交换机将使用路由密钥作为队列名称,并将消息放入该队列中。
棘手的部分是:新设备(例如device_3
)可能会在制作人的生命周期中出现。因此,我无法将路由密钥绑定到事先以设备命名的队列。
要解决的一件事是每次需要手动按需传递消息时创建队列和绑定,这听起来像是一些开销。
第二种解决方案可能是我将有关新设备的信息传递给制作人,然后添加新的绑定。
但也许,使用某种动态路由可以更轻松地自动按需创建队列。
答案 0 :(得分:2)
如果它是您的选项,您可以使用等于其指定的队列的路由键将消息发布到默认交换(无名)。
来自官方RabbitMQ tuttorial:
默认交换是没有名称的直接交换(空字符串) 经纪人预先申报。它有一个特殊的属性 对于简单的应用程序非常有用:创建的每个队列都是 使用与路由密钥相同的路由密钥自动绑定到它 队列名称。