# RabbitMQ 基础配置 ## 场景 应用之间要做异步解耦,用 RabbitMQ 传递消息。 ## 前置条件 - 一台 Linux(内存至少 4G) - 知道要建几个 vhost、哪些用户 - 磁盘留足空间(消息会落盘) ## 配置 ```bash 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`。 ## 验证 ```bash rabbitmqctl cluster_status rabbitmqctl list_connections rabbitmqctl list_queues -p /app ``` ## 回滚 ```bash 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 一致,否则起不来。