0aa8fe6
这次没有正文改动。
这是 middleware/RabbitMQ 基础配置.md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
e4d2cd0
@@ -0,0 +1,62 @@ +--- +tags: [RabbitMQ, 消息队列, 中间件] +order: 30 +--- + +# 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 一致,否则起不来。