rabbitmq
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRabbitMQ Core Knowledge
RabbitMQ核心知识
Full Reference: See advanced.md for producer patterns (Node.js, Java, Python, Go), consumer patterns, security configuration, and high availability setup.
Deep Knowledge: Usewith technology:mcp__documentation__fetch_docsfor comprehensive documentation.rabbitmq
完整参考:查看advanced.md了解生产者模式(Node.js、Java、Python、Go)、消费者模式、安全配置和高可用部署方案。
深度知识:调用并指定技术为mcp__documentation__fetch_docs可获取完整文档。rabbitmq
Quick Start (Docker)
快速开始(Docker)
yaml
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672" # AMQP
- "15672:15672" # Management UI
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=adminyaml
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672" # AMQP
- "15672:15672" # Management UI
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=adminCore Concepts
核心概念
| Concept | Description |
|---|---|
| Exchange | Routes messages to queues |
| Queue | Buffer that stores messages |
| Binding | Rule linking exchange to queue |
| Routing Key | Message attribute for routing |
| 概念 | 描述 |
|---|---|
| Exchange | 将消息路由到队列 |
| Queue | 存储消息的缓冲区 |
| Binding | 关联交换机和队列的规则 |
| Routing Key | 用于路由的消息属性 |
Architecture
架构
Producer ──▶ Exchange ──binding──▶ Queue ──▶ Consumer
│
├── direct (exact routing key match)
├── topic (pattern matching)
├── fanout (broadcast to all)
└── headers (header-based routing)生产者 ──▶ Exchange ──binding──▶ 队列 ──▶ 消费者
│
├── direct (路由键精确匹配)
├── topic (模式匹配)
├── fanout (广播到所有队列)
└── headers (基于消息头路由)Exchange Types
交换机类型
| Type | Routing | Use Case |
|---|---|---|
| direct | Exact key match | Task queues, RPC |
| topic | Pattern (*.#) | Event routing |
| fanout | Broadcast all | Notifications |
| headers | Header match | Complex routing |
undefined| 类型 | 路由规则 | 适用场景 |
|---|---|---|
| direct | 键精确匹配 | 任务队列、RPC |
| topic | 模式匹配(*.#) | 事件路由 |
| fanout | 全量广播 | 通知推送 |
| headers | 消息头匹配 | 复杂路由 |
undefinedTopic exchange patterns
Topic交换机匹配模式
order.* → matches order.created, order.updated
order.# → matches order.created, order.item.added
*.created → matches order.created, user.created
undefinedorder.* → 匹配 order.created, order.updated
order.# → 匹配 order.created, order.item.added
*.created → 匹配 order.created, user.created
undefinedQueue Configuration
队列配置
| Argument | Description |
|---|---|
| Message expiration (ms) |
| Max queue size |
| DLX for rejected messages |
| DLQ routing key |
| classic, quorum, stream |
| 参数 | 描述 |
|---|---|
| 消息过期时间(毫秒) |
| 队列最大长度 |
| 处理被拒绝消息的死信交换机 |
| 死信队列路由键 |
| 队列类型:classic、quorum、stream |
When NOT to Use This Skill
本技能不适用场景
- Event streaming with replay - Kafka provides persistent log
- Ultra-high throughput (>100k msg/s) - Kafka or Pulsar scale better
- AWS-native architecture - SQS integrates better
- Lightweight messaging - NATS has simpler operations
- JMS compliance required - ActiveMQ provides JMS API
- 需要回放的事件流场景:Kafka提供持久化日志能力更适配
- 超高吞吐量场景(>10万条消息/秒):Kafka或Pulsar扩展性更好
- AWS原生架构:SQS集成度更高
- 轻量级消息场景:NATS运维更简单
- 要求JMS兼容:ActiveMQ提供JMS API支持
Anti-Patterns
反模式
| Anti-Pattern | Why It's Bad | Solution |
|---|---|---|
| No prefetch limit | Consumer overwhelmed | Set |
| Classic queues in HA | Data loss on node failure | Use quorum queues |
| No DLX configured | Poison messages loop forever | Configure dead letter exchange |
| Automatic acks | Message loss on crash | Use manual acks |
| No publisher confirms | Silent message loss | Enable confirms for critical messages |
| 反模式 | 弊端 | 解决方案 |
|---|---|---|
| 未设置prefetch限制 | 消费者负载过高 | 将 |
| 高可用场景使用classic队列 | 节点故障时会丢失数据 | 使用quorum队列 |
| 未配置DLX | 有毒消息会无限循环 | 配置死信交换机 |
| 自动ack | 消费者崩溃时会丢失消息 | 使用手动ack |
| 未开启生产者确认 | 消息丢失无感知 | 关键消息开启确认机制 |
Quick Troubleshooting
快速排查
| Issue | Likely Cause | Fix |
|---|---|---|
| Messages piling up | Slow/dead consumer | Check consumer count and processing |
| High memory usage | Too many unacked messages | Reduce prefetch, add consumers |
| Messages not routed | Wrong routing key | Check exchange-queue bindings |
| Duplicate messages | Consumer crashed before ack | Implement idempotent processing |
| Publisher confirms timeout | Broker overloaded | Reduce publish rate |
| 问题 | 可能原因 | 修复方案 |
|---|---|---|
| 消息堆积 | 消费者过慢或宕机 | 检查消费者数量和处理逻辑 |
| 内存占用过高 | 未ack消息过多 | 降低prefetch值,新增消费者 |
| 消息未被路由 | 路由键错误 | 检查交换机与队列的绑定关系 |
| 消息重复 | 消费者ack前崩溃 | 实现消费幂等逻辑 |
| 生产者确认超时 | Broker负载过高 | 降低生产速率 |
Production Checklist
生产环境检查清单
- TLS/SSL enabled
- Users with least privilege
- Virtual hosts for isolation
- Quorum queues for HA
- Dead letter exchanges configured
- Message TTL set
- Prefetch limits configured
- Publisher confirms enabled
- Monitoring dashboards
- Alerting configured
- 已开启TLS/SSL
- 用户配置遵循最小权限原则
- 已配置虚拟主机做隔离
- 高可用场景使用quorum队列
- 已配置死信交换机
- 已设置消息TTL
- 已配置prefetch限制
- 已开启生产者确认
- 已部署监控看板
- 已配置告警规则
Reference Documentation
参考文档
Available topics: , , , , ,
basicsexchangesqueuesconsumersclusteringproduction可用主题:、、、、、
basicsexchangesqueuesconsumersclusteringproduction