一、拉取image
docker pull rabbitmq:3-management
二、创建并启动container
1、为了持久化数据到宿主机,新建目录如下:
mkdir -p ~/docker/rabbitmq
cd ~/docker/rabbitmq && mkdir data logs
touch rabbitmq.conf
# 复制如下rabbitmq配置文件示例
touch enabled_plugins
# 复制如下插件配置文件示例
2、创建并启动container
docker run -d --name rabbitmq-server-01 \
--hostname localhost \
--network my-network \
-e RABBITMQ_DEFAULT_USER=rabbitmq_admin \
-e RABBITMQ_DEFAULT_PASS=123456Abc \
-v ~/docker/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ~/docker/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins \
-v ~/docker/rabbitmq/data:/var/lib/rabbitmq \
-v ~/docker/rabbitmq/logs:/var/log/rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
rabbitmq:3-management
在Debian 和 Ubuntu系统中,配置文件默认存放路径为:
/etc/rabbitmq/rabbitmq.conf
四、使用RabbitMQ
1、登录http://127.0.0.1:15672/#/,用户名密码:rabbitmq_admin / 123456Abc
2、查看插件是否开启:
docker exec -it rabbitmq-server-01 /bin/bash
rabbitmq-plugins list
# 带*的为已开启
附RabbitMQ配置文件示例:
在RabbitMQ 3.7.0之前,RabbitMQ配置文件名为rabbitmq.config并使用了Erlang术语配置格式。 新版仍然支持该格式以实现向后兼容性,建议运行3.7.0或更高版本的用户考虑新的sysctl格式。
# RabbitMQ Configuration
# 设置 RabbitMQ 默认用户和密码
# default_user = guest
# default_pass = guest
# 指定 RabbitMQ 默认虚拟主机
default_vhost = /
# 设置心跳时间(单位s)
# 由客户端发给服务端的心跳间隔,以维护连接的活动状态
# 设置为0则关闭心跳,默认是60秒
# 如果服务器在两个连续的心跳周期内未收到客户端的心跳消息,它将关闭客户端的连接
# 心跳时间不建议低于6秒(太短时,客户端发给服务端的消息可能因为网络延迟,而造成服务端误判)
heartbeat = 60
# 监听消息端口
# IPv4 127.0.0.1:5672
listeners.tcp.local = 0.0.0.0:5672
# IPv6
# listeners.tcp.local_v6 = ::1:5672
# 设置 AMQP 帧的最大允许大小(单位byte)
# 与客户端协商的允许最大包大小,若包太大会拆分成多次发送,默认是131072 byte=128KB
frame_max = 131072
# 设置每个连接允许的最大channels数量
# 与客户端协商的允许最大chanel大小,默认 0 表示无限制。该数值越大,则broker使用的内存就越高
channel_max = 128
# 设置磁盘可用限制(单位byte)
# 若磁盘容量低于该值,则停止接收数据,并发出磁盘警报
disk_free_limit.absolute = 50000
# 基于内存的流量控制阈值
# 当节点内存使用达到节点内存上限的 40%(默认0.4) 时,将触发内存警告
# 内存警告通常会触发 RabbitMQ 的流控机制,以减少生产者的速率,以避免内存耗尽
vm_memory_high_watermark.relative = 0.4
# 当节点内存高水位线达到内存上限的 50%(默认0.5) 时,RabbitMQ 可能开始使用磁盘分页以释放内存
# 使用磁盘分页可以帮助避免内存耗尽,但会导致性能下降,因为从磁盘读取数据比从内存读取数据慢得多
vm_memory_high_watermark_paging_ratio = 0.5
# 设置 RabbitMQ 日志
# level 用于控制日志的粒度,'none'(不记录日志事件), 'error'(只记录错误), 'warning'(只记录错误和警告), 'info'(记录错误,警告和信息), or 'debug'(记录错误,警告,信息以及调试信息)
log.dir = /var/log/rabbitmq
log.file = rabbit.log
log.console = false
log.console.level = info
log.exchange = false
log.exchange.level = info
# 统计收集时间间隔(单位ms),主要针对于management plugin
# 控制了统计信息的记录频率。较短的时间间隔会导致更频繁的数据收集,这对于实时监控和调试可能非常有用,但会增加管理数据库的负载
# collect_statistics_interval = 5000
# 更多配置项...
# 参考:https://github.com/rabbitmq/rabbitmq-server/blob/v3.11.x/deps/rabbit/docs/rabbitmq.conf.example
配置文件模板:https://github.com/rabbitmq/rabbitmq-server/blob/v3.11.x/deps/rabbit/docs/rabbitmq.conf.example
配置文件说明:https://www.rabbitmq.com/configure.html#config-file
附RabbitMQ的插件配置enabled_plugins
拷贝如下内容到enabled_plugins文件中即可:
[rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp,rabbitmq_federation_management,rabbitmq_prometheus].
插件说明:
rabbitmq_management
:RabbitMQ 管理插件,允许您通过 Web 界面管理 RabbitMQ 服务器。在配置中,指定了监听的端口15672
和 IP 地址"0.0.0.0"
,以允许从任何 IP 地址访问管理界面。rabbitmq_mqtt
:RabbitMQ MQTT 插件,用于支持 MQTT 协议。在配置中,指定了默认虚拟主机和允许匿名连接。rabbitmq_stomp
:RabbitMQ STOMP 插件,用于支持 STOMP 协议。在配置中,指定了默认虚拟主机和监听的 TCP 端口61613
。
4.rabbitmq_federation_management
插件是 RabbitMQ 的插件之一,它与消息队列的远程复制和分发有关。具体来说,它是 rabbitmq_federation
插件的扩展,允许通过管理界面配置和管理远程复制的策略。
主要功能和用途包括:远程集群复制;动态配置;监控和管理。
这个插件非常有用,特别是在需要在多个 RabbitMQ 集群之间共享消息数据时。它允许您轻松地设置和管理消息队列之间的数据复制和分发,从而实现高可用性、负载均衡和数据备份等功能。通过管理界面,您可以方便地配置和监控这些远程复制策略,而不必深入了解底层配置细节。
5.rabbitmq_prometheus
是 RabbitMQ 的插件之一,它用于支持 Prometheus 监控系统。该插件允许 RabbitMQ 实例将指标(metrics)以 Prometheus 格式提供,以便 Prometheus 服务器可以轻松地收集和存储这些指标,进行性能监控和警报。
主要特点和用途:提供 Prometheus 指标;与 Prometheus 集成;性能分析;警报。
要使用 rabbitmq_prometheus
插件,您需要在 RabbitMQ 服务器上安装该插件并启用它。一旦启用,Prometheus 将能够收集 RabbitMQ 的指标,并您可以使用 Prometheus 和 Grafana 等工具进行监控和可视化。这对于在生产环境中监视和管理 RabbitMQ 非常有帮助。