RabbitMQ是实现高级消息队列协议(AMQP)的开源消息代理软件(有时称为面向消息的中间件)。
RabbitMQ服务器使用Erlang编程语言编写,并基于Open Telecom Platform框架构建,用于集群和故障转移。
主要用于各个业务场景的拆分,降低系统耦合性。本文主要介绍在docker中如何运行rabbitmq中间件
一、下载及简单运行
rabbitmq官方已经编写了docker镜像,镜像地址。
1.下载
1 | docker pull rabbitmq # rabbitmq最小安装 |
2.运行
1 | docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management |
访问http://localhost:15672 即可访问rabbitmq的管理界面。默认的用户名/密码为 guest/guest
二、带参数运行
通过cookie连接rabbitmq
cookie 对于rabbitmq集群来说相当重要,集群间应该配置相同的cookie使节点互通。参考官网
Cookie只是一串字母数字字符,最大长度为255个字符。它通常存储在本地文件中。
- 在docker 中 可以使用参数RABBITMQ_ERLANG_COOKIE在运行命令中开启cookie,
1 | docker run -d --hostname some-rabbit --name some-rabbit --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3 |
- 也可以使用挂在cookie文件的方式,cookie文件容器内部的地址在 /var/lib/rabbitmq/.erlang.cookie通过docker 创建secrets文件
1 | docker service create --name rabbitmq-cookie --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie,uid=1001,gid=1001,mode=0600 rabbitmq |
需要指定uid = XXX,gid = XXX,mode = 0600,以便容器中的Erlang能够正确读取cookie文件。
其他参数
1.SSL 配置
1 | # 对于使用管理插件的SSL配置 |
2.设置默认用户和密码
如果要更改guest / guest的默认用户名和密码,可以使用RABBITMQ_DEFAULT_USER和RABBITMQ_DEFAULT_PASS环境变量来进行更改.
1 | docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management |
3.设置默认vhost
可以使用RABBITMQ_DEFAULT_VHOST来改变vhost
1 | docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management |
4.开启插件
- 修改dockerfile的方法
1 | FROM rabbitmq:3.7-management |
- 您还可以在/etc/rabbitmq/enabled_plugins上挂载一个文件,该文件的内容是以英文句号结尾的插件列表名称数组。
例如
1 | [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp]. |
5.其他配置
其他配置我们可以通过配置文件配置,容器内配置文件地址在/etc/rabbitmq/rabbitmq.conf,文件内容可参考官网
在运行的时候,讲写好的配置文件改在到容器内的地址
三、插件
上面我们讲到了插件的开启方式,但是对于插件我们怎么安装呢,在rabbitmq中,插件都放在了/plugins文件夹下,所以我们在运行rabbitmq容器时,
可以把/plugins文件夹挂在到宿主机上,以及开启插件的文件
1 | docker run -d --hostname my-rabbit --name some-rabbit -v /home/rabbitmq/plugins:/plugins -v /home/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins rabbitmq:3-management |
解压得到文件 rabbitmq_delayed_message_exchange-20171201-3.7.x.ez
然后将下载的插件放入宿主机plugins文件夹下,在enabled_plugins文件中添加插件名称。
rabbitmq_delayed_message_exchange