RabbitMQ¶
消息代理,适合任务队列、业务事件、路由分发和需要灵活 AMQP 模型的场景。
核心概念¶
| 概念 | 说明 |
|---|---|
| Producer | 发布消息的应用。 |
| Exchange | 根据类型和路由规则将消息路由到 Queue。 |
| Queue | 存放等待消费者处理的消息。 |
| Binding | Exchange 与 Queue 之间的绑定规则。 |
| Consumer | 接收并处理消息的应用。 |
| Virtual Host | 逻辑隔离的命名空间。 |
常见 Exchange 类型:direct 按 routing key 精确匹配;topic 按模式匹配;fanout 广播;headers 按消息头匹配。
可靠投递¶
- Producer 使用 publisher confirms,确认 Broker 已接管消息。
- Consumer 优先使用手动 ACK;业务真正处理成功后再确认。
- 失败消息按业务设计重试、延迟队列和死信队列,避免无限快速重试。
- 用 prefetch 限制未确认消息数量,防止慢消费者被压垮。
集群与运维¶
rabbitmq-diagnostics status
rabbitmqctl cluster_status
rabbitmqctl list_queues name messages consumers
rabbitmqctl list_connections
- 集群同步元数据,但队列消息的副本策略取决于队列类型。
- 关键业务优先评估 Quorum Queue;它以多数派复制实现更可预测的故障行为。
- 生产集群建议使用奇数节点数;两节点集群无法在网络分区时形成多数派。
- 监控队列堆积、未确认消息、消费者容量、磁盘/内存告警和连接数。