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插件

RabbitMQMQTT 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

标签: MQTT, RabbitMQ, broker, 路由

添加新评论