
一、RabbitMQ 核心架构解析
1. AMQP 协议模型
ChannelBindingPublisher/ConsumerVirtualHostExchangeQueueConsumer
- 核心组件:
- Broker:消息代理服务器
- Virtual Host:逻辑隔离单元(类似 MySQL 的 database)
- Channel:复用 TCP 连接的轻量级链接(减少 3 次握手开销)
- Exchange:路由决策引擎(4 种类型)
- Queue:存储消息的缓冲区(内存/磁盘持久化)
2. 消息流转原理
# 生产者发布消息 channel.basic_publish( exchange='orders', routing_key='payment', body=json.dumps(order), properties=pika.BasicProperties( delivery_mode=2,# 持久化消息 headers={'priority':'high'}))# 消费者订阅defcallback(ch, method, properties, body): process_message(body) ch.basic_ack(delivery_tag=method.delivery_tag)# 手动 ACK channel.basic_consume( queue='payment_queue', on_message_callback=callback, auto_ack=False# 关闭自动确认)
二、六大核心用法详解
1. 简单队列模式(Hello World)
场景:单生产者 - 单消费者基础通信 拓扑结构:
[Producer] → [Queue] → [Consumer]
Java 实现:
// 生产者ConnectionFactory factory =newConnectionFactory(); factory.setHost("localhost");try(Connection conn = factory.newConnection();Channel channel = conn.createChannel()){ channel.queueDeclare("hello",false,false,false,null); channel.basicPublish("","hello",null,"Hello World!".getBytes());}// 消费者DeliverCallback callback =(consumerTag, delivery)->{String msg =newString(delivery.getBody(),"UTF-8");System.out.println("Received: "+ msg);}; channel.basicConsume("hello",true, callback, consumerTag ->{});
性能指标:
- 吞吐量:约 5,000 msg/sec(非持久化)
- 延迟:<5ms(局域网环境)



