14.6.2. RabbitMQ

14.6.2.4. Plugins

  1. Management Plugin <https://www.rabbitmq.com/management.html>

14.6.2.5. 参考链接

https://www.cnblogs.com/ysocean/p/9251884.html

14.6.2.6. docker构建admin

Dockerfile:

FROM rabbitmq:3.12-management

# 设置 rabbitmqadmin 目录
WORKDIR /root/

# 安装 curl 和 wait-for-it 脚本(用于等待 15672 端口就绪)
RUN apt-get update && apt-get install -y curl netcat \
   && apt-get clean && rm -rf /var/lib/apt/lists/*

# 复制等待脚本
COPY wait-for-it.sh /usr/local/bin/wait-for-it
RUN chmod +x /usr/local/bin/wait-for-it

# 复制启动脚本
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

# 覆盖默认 entrypoint
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["rabbitmq-server"]

docker-entrypoint.sh:

#!/usr/bin/env bash
set -e

# 启动 RabbitMQ 作为后台进程
rabbitmq-server &

# 记录 RabbitMQ 进程 ID
RABBITMQ_PID=$!

# 等待 RabbitMQ 管理界面启动
/usr/local/bin/wait-for-it localhost 15672 60

# 下载 rabbitmqadmin
curl -o /usr/local/bin/rabbitmqadmin http://localhost:15672/cli/rabbitmqadmin
chmod +x /usr/local/bin/rabbitmqadmin

# 等待 RabbitMQ 进程
wait "$RABBITMQ_PID"

docker-entrypoint.sh:

#!/usr/bin/env bash
set -e

# 启动 RabbitMQ 作为后台进程
rabbitmq-server &

# 记录 RabbitMQ 进程 ID
RABBITMQ_PID=$!

# 等待 RabbitMQ 管理界面启动
/usr/local/bin/wait-for-it localhost 15672 60

# 下载 rabbitmqadmin
curl -o /usr/local/bin/rabbitmqadmin http://localhost:15672/cli/rabbitmqadmin
chmod +x /usr/local/bin/rabbitmqadmin

# 等待 RabbitMQ 进程
wait "$RABBITMQ_PID"

chenjie@chenjie:~/work/docker/rabbitmqadmin$ cat wait-for-it.sh
#!/usr/bin/env bash
# 用于等待 RabbitMQ 管理界面端口就绪

HOST="$1"
PORT="$2"
TIMEOUT="${3:-30}"  # 默认超时时间 30s

echo "Waiting for $HOST:$PORT to be available..."
for i in $(seq $TIMEOUT); do
   if nc -z "$HOST" "$PORT"; then
      echo "$HOST:$PORT is available!"
      exit 0
   fi
   sleep 1
done

echo "Timeout waiting for $HOST:$PORT"
exit 1
docker build -t my-rabbitmq:latest .
docker run -d --name my-rabbitmq -p 5672:5672 -p 15672:15672 my-rabbitmq:latest

现在可以利用rabbitmqadmin来管理rabbitmq了。

前提要开启15672端口,默认是关闭的。

rabbitmqadmin --host=172.16.100.96 --port=15672 --username=xx --password=xx list queues

rabbitmqadmin --host=172.16.100.96 --port=5672 \
   --username=xx --password=xx --vhost="/" \
   declare queue name=xxx durable=true arguments='{"x-message-ttl":60000}'

如果想基于amqp去管理,只能老老实实的连接5672端口,然后去管理。