1. RabbitMQ简介
RabbitMQ是一种可靠的消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,可以实现不同应用程序之间的异步通信。它适用于分布式系统架构、微服务、实时消息处理等场景。RabbitMQ具有高可用性、可扩展性和灵活性,支持多种消息模型。
2. RabbitMQ的6种消息模型
RabbitMQ支持6种消息模型,分别是:
2.1 简单模型(Simple Model)
简单模型是最基本的消息模型,包含一个生产者和一个消费者。生产者发送消息到队列,消费者从队列中接收消息并进行处理。这种模型适合于单个应用程序中的异步任务。
示例代码如下:
import pika
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 创建队列,如果队列已存在,则不进行重新创建
channel.queue_declare(queue='simple_queue')
# 发送消息到队列
channel.basic_publish(exchange='', routing_key='simple_queue', body='Hello, RabbitMQ!')
print(" [x] Sent 'Hello, RabbitMQ!'")
# 关闭连接
connection.close()
重点代码是发送消息的部分:
channel.basic_publish(exchange='', routing_key='simple_queue', body='Hello, RabbitMQ!')
在这里,我们使用了channel.basic_publish方法向名为'simple_queue'的队列发送消息。
消费者接收消息的示例代码如下:
import pika
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 创建队列,如果队列已存在,则不进行重新创建
channel.queue_declare(queue='simple_queue')
def callback(ch, method, properties, body):
# 处理收到的消息
print(" [x] Received %r" % body)
# 告诉RabbitMQ,使用callback来接收消息
channel.basic_consume(queue='simple_queue', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
# 开始循环接收消息
channel.start_consuming()
在这里,我们使用了channel.basic_consume方法指定了接收消息的回调函数callback,并使用channel.start_consuming方法开始循环接收消息。
2.2 工作队列模型(Work Queue Model)
工作队列模型中,有一个生产者和多个消费者。生产者将消息发送到队列,多个消费者同时监听队列,每个任务只会被一个消费者接收并处理。这种模型适合于分布式系统中的任务分发。
示例代码如下: