RabbitMQ 搭建MQTT服务

        上一篇 Windows 安装RabbitMQ 中,已经安装好 RabbitMQ,并且创建了一个基于默认虚拟主机(Virtual Host) "/"  的测试账号admin-test

1.RabbitMQ启用MQTT功能 

rabbitmq-plugins enable rabbitmq_mqtt

 1.1 MQTTX测试MQTT服务

下载地址:https://www.emqx.com/zh/downloads/MQTTX/v1.6.2/MQTTX.Setup.1.6.2.exe

或者GitHub地址:https://github.com/emqx/MQTTX/releases

1.1.1 新建连接

注意:这里说明下 关于 用户名 密码的填写

RabbitMQ 开启的 MQTT服务,是不允许 匿名访问的(可以设置允许),所以要输用户名密码

连接MQTT服务的用户名 就是 前面我们创建的 RabbitMQ 的 用户名 和 密码

 

1.1.2 连接成功

其他参数 默认,点击图右上角 【连接】

 2.新增专门供MQTT业务使用的Virtual Host

        前面的那些MQTT的操作都是基于 RabbitMQ默认的Virtual Host的进行操作,RabbitMQ 在安装后会创建一个默认的 “/” 虚拟主机。每个RabbitMQ 服务器都能创建若干个虚拟的消息服务器,我们称之为虚拟主机。每一个虚拟主机都拥有自己的交换机、队列和绑定等(命名空间的概念),每个虚拟主机之间是相互隔离的,这就意味着我们可以在不同虚拟主机之间使用相同的交换机、队列。每个RabbitMQ 用户必须隶属于一个或多个虚拟主机,我们在连接RabbitMQ 的时候必须先指定一个虚拟主机。

        而每个虚拟机里(包括默认的"/"虚拟主机)都有个名为: amq.topic 的 默认Exchange(交换器),MQTT客户端会将消息发往该交换器上。在发布消息时,MQTT插件会自动将MQTT topic名称中的正斜杠变更为句点,用作AMQP路由键。

当通过MQTT连接RabbitMQ来订阅消息时,RabbitMQ将创建新的队列。队列名称将采用mqtt-subscriber-[NAME]qos[N]的格式。其中[NAME]是唯一的客户端名称,[N]是客户端连接设置的QoS等级。

举例来说,一个名为mqtt-subscription-mqttx_1c0fa5b4qos0的队列,代表订阅者名称为mqttx_1c0fa5b4(MQTTX测试工具里的 Client ID),并且QoS设置为了0。一旦为订阅请求创建队列之后,那么该队列将会采用AMQP点分路由键的语义,被绑定到topic交换器上

2.1 新建名为test-host 的Virtual Host  

2.1.1 命令行创建

rabbitmqctl add_vhost test-host

2.1.2 Web管理界面创建

 2.2 为 admin-test 增加 test-host 虚拟主机 的使用权限

2.2.1 命令行设置

rabbitmqctl set_permissions -p test-host admin-test ".*" ".*" ".*"

2.2.2  Web管理界面设置

 

 3.连接到test-host 的Virtual Host的MQTT服务

格式:对应虚拟主机名称:对应的用户名

比如我们连默认虚拟主机"/" ,就是 /:用户名, 由于是默认虚拟主机  /:  这里可以省略

所以连接 test-host ,就是 test-host:admin-test

 4.修改RabbitMQ的Socket连接数

 在Windows Server 2008 R2下 Socket连接数也就 829 个

 在Windows Server 2016下 Socket连接数也就 7280个

查看命令

rabbitmqctl status

 sockets_used就是已经连接的数量

sockets_limit通常是total_limit的0.8到0.9

4.1 修改socket 的 total_limit 数

4.1.1 新建系统变量 ERL_MAX_PORTS

 4.1.2 重启RabbitMQ服务

在服务里启动或者sbin 目录下 重新运行 rabbitmq-server.bat

4.1.3 查看修改后的值

 

 

猜你喜欢

转载自blog.csdn.net/qq1326702940/article/details/121843035