Oamc

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 一致,否则起不来。