上一篇 Windows 安装RabbitMQ 中,已经安装好 RabbitMQ,并且创建了一个基于默认虚拟主机(Virtual Host) "/" 的测试账号admin-test
rabbitmq-plugins enable rabbitmq_mqtt
下载地址:https://www.emqx.com/zh/downloads/MQTTX/v1.6.2/MQTTX.Setup.1.6.2.exe
或者GitHub地址:https://github.com/emqx/MQTTX/releases
注意:这里说明下 关于 用户名 密码的填写
RabbitMQ 开启的 MQTT服务,是不允许 匿名访问的(可以设置允许),所以要输用户名密码
连接MQTT服务的用户名 就是 前面我们创建的 RabbitMQ 的 用户名 和 密码
其他参数 默认,点击图右上角 【连接】
前面的那些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交换器上
rabbitmqctl add_vhost test-host
rabbitmqctl set_permissions -p test-host admin-test ".*" ".*" ".*"
格式:对应虚拟主机名称:对应的用户名
比如我们连默认虚拟主机"/" ,就是 /:用户名, 由于是默认虚拟主机 /: 这里可以省略
所以连接 test-host ,就是 test-host:admin-test
在Windows Server 2008 R2下 Socket连接数也就 829 个
在Windows Server 2016下 Socket连接数也就 7280个
查看命令
rabbitmqctl status
sockets_used就是已经连接的数量
sockets_limit通常是total_limit的0.8到0.9
在服务里启动或者sbin 目录下 重新运行 rabbitmq-server.bat