RabbitMQ 基础配置
场景
应用之间要做异步解耦,用 RabbitMQ 传递消息。
前置条件
- 一台 Linux(内存至少 4G)
- 知道要建几个 vhost、哪些用户
- 磁盘留足空间(消息会落盘)
配置
dnf install -y rabbitmq-server
systemctl enable --now rabbitmq-server
# 管理界面
rabbitmq-plugins enable rabbitmq_management
# 建用户和 vhost
rabbitmqctl add_user app 强密码
rabbitmqctl add_vhost /app
rabbitmqctl set_permissions -p /app app ".*" ".*" ".*"
rabbitmqctl set_user_tags app monitoring
# 看状态
rabbitmqctl status
rabbitmqctl list_queues -p /app name messages consumers
浏览器打开 http://IP:15672。
验证
rabbitmqctl cluster_status
rabbitmqctl list_connections
rabbitmqctl list_queues -p /app
回滚
rabbitmqctl delete_vhost /app
rabbitmqctl delete_user app
坑
- 磁盘水位到了(默认 50G 或 50%)会阻塞生产者,日志里是
disk_free_limit。 - 内存水位默认 40%,超了也会阻塞,先调
vm_memory_high_watermark或加内存。 - 队列没有消费者,消息会一直堆,最后把磁盘写满。
guest只能本机登录,远程连不上是正常的。- 节点名(
nodename)改了会找不到数据目录,重装前先备份/var/lib/rabbitmq。 - 集群要求 Erlang cookie 一致,否则起不来。