我正在尝试在 docker 容器内启动 RMQ,使用预先创建的 queue qwer
。
在此之前,我使用的是简单docker-compose.yml
文件:
rabbit:
image: rabbitmq:management-alpine
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
Run Code Online (Sandbox Code Playgroud)
它工作得很好,只是它在开始时没有预先创建队列。现在我已经切换到自定义图像,如下Dockerfile
:
FROM rabbitmq:management-alpine
ADD rabbitmq.conf /etc/rabbitmq/
ADD definitions.json /etc/rabbitmq/
RUN chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq.conf /etc/rabbitmq/definitions.json
Run Code Online (Sandbox Code Playgroud)
rabbitmq.conf
v3.7+ sysctl 样式的配置在哪里,有一行:
management.load_definitions = /etc/rabbitmq/definitions.json
Run Code Online (Sandbox Code Playgroud)
并definitions.json
包含尝试创建队列:
{
"vhosts":[
{"name":"/"}
],
"queues":[
{"name":"qwer","vhost":"/","durable":true,"auto_delete":false,"arguments":{}}
]
}
Run Code Online (Sandbox Code Playgroud)
现在它开始拒绝登录:
Error on AMQP connection <0.660.0> (172.18.0.6:48916 -> 172.18.0.10:5672, state: starting):
PLAIN login refused: user 'guest' - invalid credentials
Run Code Online (Sandbox Code Playgroud)
本以为任务有些简单,但是rabbit本身的配置过程是最复杂的任务,文档也有些不清楚。
即使经过 4 天的试验和谷歌搜索,我也无法弄清楚它应该如何工作。
你能帮我吗,如何编写配置文件,以创建一个队列并保留连接和与之交谈的能力?