关注分享主机优惠活动
国内外VPS云服务器

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

总结:本文基于一个简单的测试插件。 包括协议概述、启用的插件安装和配置以及基础测试。 该协议是基于发布/订阅模型的物联网消息传递协议。 最多发送一条消息有三种服务质量。 在此级别,会发生消息丢失或重复。 消息的发布取决于底层网络。

本文基于Rabbit MQ的mqtt插件,对MQTT做了简单的测试。 包括MQTT协议概述、安装rabbitmq、配置它、打开mqtt插件以及基于MQTTX进行测试。

MQTT协议

随着5G时代的到来,连接一切正在成为现实。 访问和管理大量设备对网络宽带、通信协议和平台服务架构提出了重大挑战。

MQTT 协议是基于发布 - 订阅模型的 IoT 消息传递协议。 由于其简单、易于实施、支持QoS和小数据包,它占据了物联网协议的一半。 其特点包括: 轻量可靠:紧凑的 MQTT 封装可以在严格限制的设备硬件下运行,并在高延迟/低带宽网络上提供稳定的传输。更好的生态系统:其客户端和 SDK 覆盖所有语言平台,并且是标准的。来自 AWS IoT Core 和 Azure IoT Hub 等顶级云供应商的 IoT 平台的通信协议。 这是物联网的实际标准发布。 -订阅模型:基于发布-订阅模型。 发布-订阅模型的优点是发布者和订阅者之间的分离。 订阅者之间不需要建立直接连接,也不需要同时在线。 为物联网而生:提供全面的物联网应用功能,包括心跳机制、遗嘱消息、QoS质量等级+离线消息、异步机制、主题以及屏蔽负载内容的安全管理消息机制。 QoS:发送消息的服务质量(QoS)分为三种。 该消息在此级别最多出现一次。当消息丢失或重复时,消息发布依赖于底层 TCP/IP 网络。 也就是说,仅指定一次 =1 以确保消息仅到达一次。 即=1。 一些要求更严格的计费系统可以最大限度地减少这种级别的数据传输和协议交换(协议头只有2个字节),并提供网络流量通知机制:在发生异常中断时向发送双方通知

范围。 :通过低带宽和不可靠的网络提供基于云的数据传输和远程设备监控。

安装 Rabbitmq

安装 Rabbitmq

基于 PackageCloud yum 源安装

以 centos 7.2 上安装为例

配置 Rabbitmq yum 源

Red Hat 7 或 CentOS 7上面基于 PackageCloud yum 源安装 Rabbitmq。

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

#### 零依赖的 Erlang##[ Rabbitmq_erlang]name =rabbitmq_erlangbaseurl= https:// packagecloud.io/rabbitmq/erlang/el/7/$basearchrepo_gpgcheck=1gpgcheck=1enabled=1# PackageCloud 存储库密钥和 RabbitMQ 包签名密钥 gpgkey=https://packagecloud.io/ Rabbitmq/erlang /gpgkey https://github.com /rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.ascsslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtmetadata_expire=300[rabbitmq_erlang-source]name=rabbitmq_erlang-sourcebaseurl=https://packagecloud.io/rabbitmq/erlang/el/7 /SRPMSrepo_gpgcheck=1gpgcheck=0enabled=1gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkeysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtmetadata_expire=300#### RabbitMQ 服务器# #[rabbitmq_server]name=rabbitmq_serverbaseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearchrepo_gpgcheck=1gpgcheck=1enabled=1#PackageCloud存储库密钥和RabbitMQ包签名密钥gpgkey=https:// packagecloud.io/rabbitmq/rabbitmq-server/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key 。 =1sslcacert=/etc/pki/tls/certs/ca-bundle.crtmetadata_expire=300[rabbitmq_server-source]name=rabbitmq_server-sourcebaseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMSrepo_gpgcheck=1gpgcheck=0enabled=1gpgkey=https:// packagecloud.io/rabbitmq/rabbitmq-server/gpgkeysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtmetadata_expire=300 安装依赖项

将这些依赖项添加到标准操作系统从存储库安装

yum install socat logrotate -yyum install erlang -y 安装 Rabbitmq yum install Rabbitmq-server -y Start Rabbitmq #配置开机启动 chkconfig Rabbitmq-server on/sbin/service Rabbitmq[k4 ]server start /sbin/service Rabbitmq-server status/sbin/service Rabbitmq-server stop 启用所需插件# 管理插件 启用 Rabbitmq-plugins 启用 Rabbitmq_management#mqtt 启用插件,也可以启用rabbitmq -同时启用插件 Rabbitmq_web_mqttrabbitmq-plugins Enable Rabbitmq_mqtt# 检查已安装的插件。 输出如下图所示。 Rabbitmq-plugins list# xxx 禁用插件,例如rabbitmq_mqttrabbitmq-plugins。 禁用 Rabbitmq_mqtt# 检查启用的插件。 return [rabbitmq_management,rabbitmq_mqtt].more /etc /rabbitmq/enabled_plugins

配置用户

配置用户权限,参见access-control

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

默认的虚拟主机和用户是:

名为 /(斜杠)的虚拟主机和名为 guest 的虚拟主机用户具有对 /vhost 的完全访问权限,默认密码为 guest。 注意:“Guest”用户只能从本地主机连接。

要远程登录“安全和管理”页面,您必须删除“Guest”用户并创建一个新用户。 有五个用户标签:管理员、监控者、策略作者、管理和无。 有关更多信息,请参阅rabbitmq 管理。

#查看用户列表:Rabbitmqctl list_users --formatter=json#删除访客用户 Rabbitmqctl delete_user guest#添加用户 Rabbitmqctl add_user "admin" 按照提示输入密码。 as 20212021# 添加虚拟主机并按要求运行。 默认vhost为/rabbitmqctl add_vhost vnode22#给用户授予权限#https://www.rabbitmq.com/aaccess-control.html# 第一个“.*”为所有实体的配置权限# 第二个“.*”为所有实体的写权限# 第三个“.*”为所有实体的读权限rabbitmqctl set_permissions -p "/ " "admin" ".*" ".*" ".*"# 为用户添加管理标签 Rabbitmqctl set_user_tags admin admin 安装验证登录管理页面

http://172.25.11.22:15672/ #/ 输入用户admin/20212021 登录后出现主页如下。

测试MQTT 安装mqttx

下载mqttx 并直接安装。 安装完成后,打开它: mqttx下载地址

配置交易所

添加新的交易所并输入Yes: topic。

使用 mqttx 配置发送和接收客户端。

您将看到显示一条消息。 发送到 mq 的消息会立即被订阅者收到。

未经允许不得转载:主机频道 » 基于RabbitMQ的MQTT插件构建MQTT服务,并使用MQTTX进行收发器测试。

评论 抢沙发

评论前必须登录!