Rabbitmq是一个开源的amqp的实现,但是也支持mqtt协议,本文旨在使用docker搭建rabbitmq服务器,使用mqtt协议。
搜索rabbitmq的镜像
docker search rabbitmq
其中第一个镜像rabbitmq是官方镜像,可以直接使用,但是这个默认是没有启动其他插件的。
也可以直接使用rabbitmq:management镜像,这个是启用了网页管理端的;
也可以直接使用rabbitmq-mqtt,这个是启用了mqtt插件的。
这里直接使用rabbitmq-mqtt。
docker pull cyrilix/rabbitmq-mqtt
启动rabbitmq容器
docker run -d cyrilix/rabbitmq-mqtt
我们可以通过以下命令查看rabbitmq中启动了什么插件
docker exec <容器ID> rabbitmq-plugins list
可以看到我们启用了rabbitmq_management和rabbitmq_mqtt,如果我们需要浏览器通过websocket连接到rabbitmq,我们还需要启动rabbitmq_web_mqtt插件
docker exec <容器ID> rabbitmq-plugins enable rabbitmq_web_mqtt
端口映射
rabbitmq管理控制台的默认端口是15672,mqtt默认端口是1883,websocket默认端口是15675
所以启动容器的时候需要做端口映射,否则无法通过宿主机器访问
docker run -p 1883:1883 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 8883:8883 -p 15672:15672 -p 25672:25672 -p 15675:15675 -d cyrilix/rabbitmq-mqtt
测试websocket over mqtt
可以使用paho提供的demo:http://www.eclipse.org/paho/clients/js/utility/
其中端口号是15675,path是/ws,账号密码是guest/guest
关于如何启动rabbitmq的mqtt插件
官方文档:
mqtt http://www.rabbitmq.com/mqtt.html
websocket over mqtt http://www.rabbitmq.com/web-mqtt.html