RabbitMQ:路由模式
在RabbitMQ中,路由(Routing)模式是一种消息传递模式,它允许根据消息的路由键将消息传递到指定的队列。生产者将消息发送到交换机(Exchange),并且绑定了特定路由键的队列会接收到这些消息。
以下是使用Python和pika
库实现RabbitMQ路由模式的一个简单例子:
生产者(发送消息):
import pika
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明一个交换机和队列
channel.exchange_declare(exchange='routing_exchange', exchange_type='direct')
# 发送消息,指定路由键为"routing_key"
channel.basic_publish(
exchange='routing_exchange',
routing_key='routing_key',
body='Hello, Routing World!')
print("消息发送完毕")
connection.close()
消费者(接收消息):
import pika
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明一个交换机和队列,并将它们绑定在一起
channel.exchange_declare(exchange='routing_exchange', exchange_type='direct')
result = channel.queue_declare(queue='', exclusive=True)
queue_name = result.method.queue
# 绑定队列到交换机,指定路由键为"routing_key"
channel.queue_bind(
exchange='routing_exchange',
queue=queue_name,
routing_key='routing_key')
# 定义一个回调函数来处理消息
def callback(ch, method, properties, body):
print(f"接收到消息: {body}")
# 开始监听并接收消息
channel.basic_consume(
queue=queue_name,
on_message_callback=callback,
auto_ack=True)
print(f"等待生产者发送到队列 {queue_name} 的消息")
# 开始消费消息
channel.start_consuming()
在这个例子中,我们创建了一个名为routing_exchange
的直接类型的交换机,并且指定了一个路由键routing_key
。生产者发送的消息将只被绑定了相同路由键的队列接收。消费者在接收到消息后,会打印出消息内容。
评论已关闭