上云无忧 > 文档中心 > 腾讯云消息队列 RabbitMQ 版实战教程 - RabbitMQ 支持 MQTT 协议使用说明
消息队列 RabbitMQ 版
腾讯云消息队列 RabbitMQ 版实战教程 - RabbitMQ 支持 MQTT 协议使用说明

文档简介:
方案介绍: MQTT 是目前广泛使用的物联网协议,RabbitMQ 是基于 AMQP 0.9.1 协议实现的广泛使用的开源消息队列产品,RabbitMQ 以插件的形式支持了 MQTT 协议,可以在 RabbitMQ 集群上方便的支持 MQTT 协议,实现对物联网等业务场景的支持。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

方案介绍

MQTT 是目前广泛使用的物联网协议,RabbitMQ 是基于 AMQP 0.9.1 协议实现的广泛使用的开源消息队列产品,RabbitMQ 以插件的形式支持了 MQTT 协议,可以在 RabbitMQ 集群上方便的支持 MQTT 协议,实现对物联网等业务场景的支持。
社区参考文档:
1. RabbitMQ 3.11 之前版本插件支持 MQTT 协议: MQTT Plugin — RabbitMQ
2. RabbitMQ 3.12 版本原生支持 MQTT 协议: Serving Millions of Clients with Native MQTT | RabbitMQ - Blog

操作步骤

步骤1:购买云上或自建RabbitMQ集群

云上直接购买 RabbitMQ 集群,立即选购
或者自己搭建 RabbitMQ 集群,详细参见: Downloading and Installing RabbitMQ — RabbitMQ

步骤2:开启MQTT插件

通过在集群节点执行以下命令开启MQTT插件:
		
sudo rabbitmq-plugins enable rabbitmq_mqtt
腾讯云的 RabbitMQ 插件管理功能正在开发中,目前可以通过提交工单来开启 MQTT 插件和打通网络工作。
开启 mqtt 插件后,可以在管控台看到新增的1883端口:

步骤3:验证 MQTT 的可用性

可以下载常用的 mqttx(MQTTX:全功能 MQTT 客户端工具)客户端工具来验证一下:
1. 新建连接,填写地址和端口。用户名和密码选用 RabbitMQ 的用户名和密码即可。

2. 新建订阅,订阅 testtopic/# 主题的消息。

3. 检查 RabbitMQ 的队列情况,可以看到每个订阅会在 RabbitMQ 新增一个队列。

4. 收发消息验证,发送 testtopic/123456消息,立即可以通过订阅收到消息。

5. 查看 RabbitMQ 监控,可以看到刚才的队列有一次收发消息的监控。

6. 验证 MQTT 上行消息和 RabbitMQ 的消息互通性,MQTT 发送消息也可以路由到普通队列,由 RabbitMQ 下游应用来消费这个消息。


7. 验证 RabbitMQ 和 MQTT 下行消息的互通性,可以 RabbitMQ 发送消息,MQTT 订阅到消息。


8. 验证总结。通过以上验证可以确认,RabbitMQ 的 MQTT 插件,可以支持正常的 MQTT 消息收发,也可以支持 MQTT 上行消息到应用,也可以支持应用发送 MQTT 消息下行消息到订阅端,并且有完善的监控。

实现原理

3.11 版本之前的实现原理,通过 MQTT 消息转为 AMQP 协议,实现 MQTT 的消息收发。

3.12 之后版本的实现原理,不再经过 AMQP 协议转换,理论上有更好的性能。

注意事项

我们推荐使用现在的稳定版本3.8.x 或3.11.x等稳定版本,没有已知 Bug。
因为3.12.x版本是新发布的版本,MQTT 实现有重新实现刚发布初始版本,我们在验证过程中,发现监控不准,RabbitMQ 互通偶尔异常等问题。因此不推荐生产环境使用3.12版本
目前支持主流的 MQTT v3 和v3.1版本,暂不支持v5版本,RabbitMQ 预计3.13版本才会支持
MQTT 协议的 topic 使用"/"分割 topic, AMQP 协议的 Topic(Routingkey)使用 "."分割 topic,所以在协议转换的时候会自动转换,应用使用的时候要注意这个差别。
不推荐 MQTT 使用匿名连接或“no login credentials”,因为 AMQP 协议会自动转换为默认用户 guest 或 mqtt.default_user,不方便做权限管控。
关于订阅持久性,注意 MQTT 和 AMQP 队列持久性的映射。
Transient clients that use transient (non-persistent) messages
Stateful clients that use durable subscriptions (non-clean sessions, QoS1)优先使用镜像队列,不要使用 Quorum Queues 特性,因为 Quorum 要求至少三节点,并且新特性稳定性待验证,暂不推荐使用。
优先使用镜像队列,不要使用 Quorum Queues 特性验证,暂不推荐使用。
相似文档
  • 什么是消息队列 TDMQ RabbitMQ 版? 消息队列 TDMQ RabbitMQ 版(TDMQ for RabbitMQ,简称 TDMQ RabbitMQ 版)是一款腾讯自主研发的消息队列服务,支持 AMQP 0-9-1 协议,完全兼容开源 RabbitMQ 的各个组件与概念,同时具备计算存储分离,灵活扩缩容的底层优势。
  • RabbitMQ 客户端支持的接口列表如下:
  • 为使用腾讯云消息队列 RabbitMQ 版服务(以下简称“本服务”),您应当阅读并遵守《消息队列 RabbitMQ 版服务等级协议》(以下简称“本协议” 或“SLA”),以及《腾讯云服务协议》。本协议包含本服务的术语和定义、服务可用性/服务成功率等级指标、赔偿方案、免责条款等相关内容。请您务必审慎阅读、充分理解各条款内容,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。
  • 消息队列 Pulsar 版(TDMQ for Pulsar,简称 TDMQ Pulsar 版)是一款基于 Apache Pulsar 自研的消息中间件,具备极好的云原生和 Serverless 特性,兼容 Pulsar 的各个组件与概念,具备计算存储分离,灵活扩缩容的底层优势。
  • 2024-01-11,专业集群支持跨地域容灾;消息中间件在业务系统的技术架构中,作为非常重要的组件。TDMQ Pulsar 本身支持了多可用区的容灾能力,为了解决当发生地域级灾难时,客户能够快速迁移业务,确保业务的连续性,故而推出跨地域容灾方案。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部