微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rabbitmq:在MQTT中收听

如何解决Rabbitmq:在MQTT中收听

在这里,我将解释我想要的用例:

  • 我在设备连接到代理之前为mqtt客户端( mqtt-subscription-client1qos1 )创建了持久队列。交流( amp.topic
  • 我为该队列( topic1 topic2 )创建了一些绑定
  • 我发送了1条消息到 topic1 (使用amqp)
  • 我通过amqp向 topic2 发送了1条消息
  • 然后使用MQTT客户端设置client =“ client1 ”,我使用相同的交换器( amp.topic )连接到“ topic1

我想收到多少条消息?我期望1,但是我得到2,我不确定我是否测试正确,或者这是否是预期的行为。

非常感谢您的帮助

解决方法

在RabbitMQ设计的AMQP中,消息始终发布到交换,根据路由键和绑定进行路由,并从队列。

在MQTT中,消息将发布到经纪人,根据主题进行路由,并通过订阅进行使用。

RabbitMQ MQTT plugin将这些概念映射在一起:

  • MQTT 经纪人是由单个交易所
  • 模拟
  • MQTT 主题用作路由键
  • MQTT 订阅是从该交换到队列的绑定
  • 最后,每个MQTT 客户端都有一个队列,可以从中接收其订阅的消息

这里的关键是,这些只是普通的RabbitMQ交换和队列,用于模拟MQTT模型-消息可以由代理路由到任何队列,而来自其他代理的消息可以路由到队列,它们不需要与您在MQTT中定义的主题相关。

因此,如果您手动将消息路由到特定MQTT客户端的队列中,RabbitMQ会将其与该队列中的其他消息一起传递到客户端。订阅客户端的“主题”没有任何区别,因为这仅用于在服务器上设置绑定

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。