RabbitMQ MQTT broker
RabbitMQ支持MQTT 3.0协议(当前支持到3.1.1)。
目前(截止到2017-7-7),RabbitMQ支持的MQTT 3.1.1特性有:
- QoS0 和 QoS1 发布&订阅(目前还不支持QoS2,发布消息的时候总是失败,后来看了文档才知道)
- 遗嘱消息(LWT)
- TLS/SSL
- 会话粘性(Session stickiness)
- 通过插拔存储后端保留消息
端口
防火墙或其他安全工具可能会拦截RabbitMQ 绑定到指定的端口上,当发生上述情况时,RabbitMQ 会启动失败。确保下列的端口没有被占用:
- 4369: epmd,RabbitMQ节点和CLI工具点对点发现服务
- 5672, 5671: used by AMQP 0-9-1 and 1.0 clients without and with TLS
- 25672: used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). See networking guide for details.
- 15672: HTTP API clients and rabbitmqadmin (only if the management plugin is enabled)
- 61613, 61614: STOMP clients without and with TLS (only if the STOMP plugin is enabled)
- 1883, 8883: (MQTT 客户端 without and with TLS, if the MQTT plugin is enabled
- 15674: STOMP-over-WebSockets clients (only if the Web STOMP plugin is enabled)
- 15675: MQTT-over-WebSockets clients (only if the Web MQTT plugin is enabled)
也可以 配置 RabbitMQ 使用其它端口。
安装
在Windows系统下,需要先下载安装 Erlang for Windows ,可以参考 Erlang version compatibility table下载对应的版本。
安装Erlang
后,下载 rabbitmq-server-3.6.10.exe 并安装,安装时可以选择安装RabbitMQ
服务。
更多信息,请参看 Installing on Windows 。
管理 Broker
如果RabbitMQ
服务自动启动,你可以在开始菜单 停止/重新安装/启动 RabbitMQ
服务。
如果想要停止broker或者检查broker状态,可以执行sbin
文件夹下的rabbitmqctl.bat
脚本(需要administrator权限)。
- 停止 Broker
使用rabbitmqctl stop
- 检查 Broker 状态
使用rabbitmqctl status
,如果没有broker运行,所有的rabbitmqctl
命令会报node absence
错误(i.e. nodedown)
更多使用方法详见 info on rabbitmqctl
启用MQTT插件
RabbitMQ
中 MQTT adapter
插件默认是不启用的,如果想启用它,使用 rabbitmq-plugins :
rabbitmq-plugins enable rabbitmq_mqtt
添加远程访问用户
broker 创建一个用户名和密码都为guest
的账户,默认情况下,这个认证只有当使用本地localhost连接broker时才会有效。如果想要远程访问需要添加新用户。
下面是一个使用命令,增加用户admin,密码 admin 的例子。
# 列出用户
$ rabbitmqctl list_users
# 添加用户/密码
$ rabbitmqctl add_user admin admin
Creating user "admin" ...
# 赋予admin用户administrator角色
$ rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
# 设置用户的权限
$ rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
你可以阅读 access control 查看如何创建更多用户,删除guest用户和赋予guest用户远程访问的方法。
可以可以通过启用 Management UI 插件 ,在网页端(http://server-name:15672/)对账户进行添加、修改和删除等操作。
更多详细的信息,请参看官方文档:RabbitMQ MQTT Adapter