基于RabbitMQ的MQTT插件搭建MQTT服务,使用MQTTX进行收发测试

本文 基于Rabbit MQ的mqtt插件,针对MQTT进行简单的测试。 包括MQTT协议的介绍,rabbitmq的安装、配置、开启mqtt插件及基于MQTTX进行的测试。

MQTT协议

随着5G时代的到来,连接一切正在成为现实。大量设备的接入和设备管理给网络宽带、通信协议和平台服务体系结构带来了巨大的挑战。

MQTT协议是基于发布-订阅模型的物联网消息传递协议。由于其实现简单、易于实现、支持QoS和小分组,已占据物联网协议的一半
特点如下:

  • 轻量级的和可靠的:紧凑的MQTT包,能够在严格受限的设备硬件和高延迟/低带宽网络上稳定传输
  • 更好的生态:其客户端和SDK覆盖所有语言平台,是AWS IoT Core Azure IoT Hub等顶级云厂商的物联网平台标准通信协议,是物联网的实际标准
  • 发布-订阅模型:基于发布-订阅模型。发布-订阅模型的优点是发布者和订阅者之间的解耦:不需要在订阅者和订阅者之间建立直接连接,也不需要同时在线
  • 为物联网而生:提供全面的物联网应用功能,如心跳机制、Will消息、QoS质量级别+离线消息、异步机制、主题和安全管理
  • 对负载内容屏蔽的消息传输机制。
  • QoS: 对传输消息有三种服务质量 (QoS):
    • 最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层 TCP/IP 网络。即:<=1
    • 至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1
    • 只有一次,确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别
  • 数据传输和协议交换的最小化 (协议头部只有 2 字节),以减少网络流量
  • 通知机制: 异常中断时通知传输双方

适用范围:在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

rabbitmq的安装

rabbitmq的安装

基于PackageCloud yum源安装

以在centos 7.2中安装为例

配置rabbitmq yum源

在Red Hat 7 或 CentOS 7 上面 基于PackageCloud yum源安装rabbitmq

创建rabbitmq.repo 文件
vi /etc/yum.repos.d/rabbitmq.repo

##
## Zero dependency Erlang
##

[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

##
## RabbitMQ server
##

[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

安装依赖

install these dependencies from standard OS repositories

yum install socat logrotate -y

yum install erlang  -y

安装rabbitmq

yum install  rabbitmq-server  -y

启动rabbitmq

#配置开机启动
chkconfig rabbitmq-server on

/sbin/service rabbitmq-server start
/sbin/service rabbitmq-server status
/sbin/service rabbitmq-server stop

开启必要的插件

# 开启管理插件
rabbitmq-plugins enable rabbitmq_management

#开启mqtt插件,也可同时开启 rabbitmq-plugins enable rabbitmq_web_mqtt
rabbitmq-plugins enable rabbitmq_mqtt

# 查看已经安装的插件,输出结果见下图
rabbitmq-plugins list

# 禁止xxx插件,如rabbitmq_mqtt
rabbitmq-plugins disable rabbitmq_mqtt

# 查看开启的插件,返回[rabbitmq_management,rabbitmq_mqtt].
more /etc/rabbitmq/enabled_plugins

在这里插入图片描述

配置用户

用户权限配置请参考access-control

当服务器第一次开始运行,并检测到它的数据库未初始化或已被删除,它将使用以下资源初始化一个新的数据库

默认的Virtual Host and User如下:

  • 一个名为/(斜杠)的虚拟主机,
  • 一个名为guest的用户,默认密码为guest,被授予对/虚拟主机的完全访问权。注意:"guest"用户只能从本地主机连接

为了安全和能远程登录管理页面,需要删除guest用户并创建新用户,用户的标签有5种:administrator ,monitoring,policymaker,management和none ,详见rabbitmq management

#查看用户列表:
rabbitmqctl list_users --formatter=json
# 删除guest用户
rabbitmqctl delete_user guest
#增加用户
rabbitmqctl add_user "admin"  根据提示输入密码,如输入20212021
#增加vhost, 根据需要执行,默认的vhost为/
rabbitmqctl add_vhost vnode22
# 给用户赋予权限
#https://www.rabbitmq.com/access-control.html
# First ".*" for configure permission on every entity
# Second ".*" for write permission on every entity
# Third ".*" for read permission on every entity
rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*"
# 给用户增加管理员标签
rabbitmqctl set_user_tags admin administrator

安装验证

登录管理页面

http://172.25.11.22:15672/#/
输入用户 admin / 20212021 进行登录,首页展示如下:
在这里插入图片描述

测试MQTT

安装mqttx

下载mqttx, 然后直接安装,安装后打开如下:
mqttx下载地址
在这里插入图片描述

配置exchanges

新增加一个exchange,类型是: topic
在这里插入图片描述

在mqttx中配置收发客户端

可以看到,发送到mq中的消息,订阅者可以立即收到
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
使用RabbitMQ搭建MQTT服务器,需要遵循以下详细步骤: 1. 安装和配置RabbitMQ: - 下载并安装RabbitMQ,官方网站提供了不同平台的安装程序。 - 安装完成后,启动RabbitMQ服务器。 2. 启用MQTT插件: - 打开终端或命令提示符窗口。 - 运行以下命令来启用MQTT插件: ``` rabbitmq-plugins enable rabbitmq_mqtt ``` - 重新启动RabbitMQ服务器。 3. 创建MQTT用户和虚拟主机: - 打开终端或命令提示符窗口。 - 运行以下命令以创建新的用户和虚拟主机: ``` rabbitmqctl add_user your_username your_password rabbitmqctl set_user_tags your_username administrator rabbitmqctl add_vhost your_vhost_name rabbitmqctl set_permissions -p your_vhost_name your_username ".*" ".*" ".*" ``` 4. 配置MQTT连接参数: - 打开配置文件 `rabbitmq.config`,该文件通常位于 RabbitMQ 安装目录下的 `conf` 文件夹中(例如:`/etc/rabbitmq/rabbitmq.config`)。 - 添加以下配置项来启用 MQTT 监听端口和设置默认虚拟主机: ```erlang [ {rabbit, [ {tcp_listeners, [{"0.0.0.0", 1883}]}, {default_vhost, <<"your_vhost_name">>} ]} ]. ``` - 保存并关闭配置文件。 5. 重启RabbitMQ服务器以应用配置更改。 现在你已经成功搭建了一个MQTT服务使用RabbitMQ。你可以使用任何MQTT客户端来连接和与服务进行通信。 请注意,这只是一个简单的演示,实际上你可能需要进一步配置和保护你的MQTT服务器,例如设置TLS/SSL加密、访问控制等。 希望这些步骤对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

enjoy编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值