Rabbitmq:在 MQTT 中监听
Rabbitmq: Listening in MQTT
在这里我将解释我想要的用例:
- 我在设备连接到代理之前为 mqtt 客户端 (mqtt-subscription-client1qos1) 创建了一个持久队列。交换 (amp.topic)
- 我为那个队列创建了一些绑定(topic1,topic2)
- 我向 topic1 发送了 1 条消息(使用 amqp)
- 我向 topic2 发送了 1 条消息(使用 amqp)
- 然后使用 MQTT 客户端设置 client="client1" 我使用相同的交换连接到 "topic1" (amp.topic)
我应该收到多少条消息?我期望 1,但我得到 2,我不确定我测试是否正确,或者这是否是预期的行为。
提前感谢您的帮助
在围绕 RabbitMQ 设计的 AMQP 中,消息始终发布到 exchange,根据 路由键和绑定 进行路由,并且从 queue.
消耗
在 MQTT 中,消息被发布到 broker,根据 topics 路由并通过 subscription.
RabbitMQ MQTT plugin 将这些概念映射在一起:
- MQTT broker 由单个 exchange
模拟
- MQTT 主题用作路由键
- MQTT 订阅 是从交换到队列的绑定
- 最后,每个 MQTT 客户端 都有一个队列,它可以从中接收其订阅的消息
这里的关键是,这些只是普通的 RabbitMQ 交换器和队列,用于模拟 MQTT 模型——消息可以由代理路由到任何队列,来自其他代理的消息可以路由到队列,而且它们不需要与您在 MQTT 中定义的主题相关。
因此,如果您手动将消息路由到特定 MQTT 客户端的队列中,RabbitMQ 会将其与该队列中的其他消息一起传送到客户端。客户端订阅的“主题”不会有任何区别,因为它仅用于在服务器上设置 binding。
在这里我将解释我想要的用例:
- 我在设备连接到代理之前为 mqtt 客户端 (mqtt-subscription-client1qos1) 创建了一个持久队列。交换 (amp.topic)
- 我为那个队列创建了一些绑定(topic1,topic2)
- 我向 topic1 发送了 1 条消息(使用 amqp)
- 我向 topic2 发送了 1 条消息(使用 amqp)
- 然后使用 MQTT 客户端设置 client="client1" 我使用相同的交换连接到 "topic1" (amp.topic)
我应该收到多少条消息?我期望 1,但我得到 2,我不确定我测试是否正确,或者这是否是预期的行为。
提前感谢您的帮助
在围绕 RabbitMQ 设计的 AMQP 中,消息始终发布到 exchange,根据 路由键和绑定 进行路由,并且从 queue.
消耗在 MQTT 中,消息被发布到 broker,根据 topics 路由并通过 subscription.
RabbitMQ MQTT plugin 将这些概念映射在一起:
- MQTT broker 由单个 exchange 模拟
- MQTT 主题用作路由键
- MQTT 订阅 是从交换到队列的绑定
- 最后,每个 MQTT 客户端 都有一个队列,它可以从中接收其订阅的消息
这里的关键是,这些只是普通的 RabbitMQ 交换器和队列,用于模拟 MQTT 模型——消息可以由代理路由到任何队列,来自其他代理的消息可以路由到队列,而且它们不需要与您在 MQTT 中定义的主题相关。
因此,如果您手动将消息路由到特定 MQTT 客户端的队列中,RabbitMQ 会将其与该队列中的其他消息一起传送到客户端。客户端订阅的“主题”不会有任何区别,因为它仅用于在服务器上设置 binding。