rabbitmq

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

RabbitMQ 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: Use
mcp__documentation__fetch_docs
with technology:
rabbitmq
for comprehensive documentation.
完整参考:查看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=admin
yaml
services:
  rabbitmq:
    image: rabbitmq:3-management
    ports:
      - "5672:5672"   # AMQP
      - "15672:15672" # Management UI
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=admin

Core Concepts

核心概念

ConceptDescription
ExchangeRoutes messages to queues
QueueBuffer that stores messages
BindingRule linking exchange to queue
Routing KeyMessage 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

交换机类型

TypeRoutingUse Case
directExact key matchTask queues, RPC
topicPattern (*.#)Event routing
fanoutBroadcast allNotifications
headersHeader matchComplex routing
undefined
类型路由规则适用场景
direct键精确匹配任务队列、RPC
topic模式匹配(*.#)事件路由
fanout全量广播通知推送
headers消息头匹配复杂路由
undefined

Topic exchange patterns

Topic交换机匹配模式

order.* → matches order.created, order.updated order.# → matches order.created, order.item.added *.created → matches order.created, user.created
undefined
order.* → 匹配 order.created, order.updated order.# → 匹配 order.created, order.item.added *.created → 匹配 order.created, user.created
undefined

Queue Configuration

队列配置

ArgumentDescription
x-message-ttl
Message expiration (ms)
x-max-length
Max queue size
x-dead-letter-exchange
DLX for rejected messages
x-dead-letter-routing-key
DLQ routing key
x-queue-type
classic, quorum, stream
参数描述
x-message-ttl
消息过期时间(毫秒)
x-max-length
队列最大长度
x-dead-letter-exchange
处理被拒绝消息的死信交换机
x-dead-letter-routing-key
死信队列路由键
x-queue-type
队列类型: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-PatternWhy It's BadSolution
No prefetch limitConsumer overwhelmedSet
prefetch
to 10-50
Classic queues in HAData loss on node failureUse quorum queues
No DLX configuredPoison messages loop foreverConfigure dead letter exchange
Automatic acksMessage loss on crashUse manual acks
No publisher confirmsSilent message lossEnable confirms for critical messages
反模式弊端解决方案
未设置prefetch限制消费者负载过高
prefetch
设为10-50
高可用场景使用classic队列节点故障时会丢失数据使用quorum队列
未配置DLX有毒消息会无限循环配置死信交换机
自动ack消费者崩溃时会丢失消息使用手动ack
未开启生产者确认消息丢失无感知关键消息开启确认机制

Quick Troubleshooting

快速排查

IssueLikely CauseFix
Messages piling upSlow/dead consumerCheck consumer count and processing
High memory usageToo many unacked messagesReduce prefetch, add consumers
Messages not routedWrong routing keyCheck exchange-queue bindings
Duplicate messagesConsumer crashed before ackImplement idempotent processing
Publisher confirms timeoutBroker overloadedReduce 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:
basics
,
exchanges
,
queues
,
consumers
,
clustering
,
production
可用主题:
basics
exchanges
queues
consumers
clustering
production