下面是Python RabbitMQ实现简单的进程间通信示例的完整攻略,包含两个示例说明。
简介
RabbitMQ是一个开源的消息列系统,它支持多种消息协议,包括AMQP、STOMP、MQTT等。在Python中,可以使用pika库来实现与RabbitMQ的交互,从而实现消息队列功能。
本文将介绍如何在Python中使用pika库实现简单的进程间通信,并提供两个示例说明。
示例一:发送和接收消息
步骤1:安装pika库
在Python中,我们需要安装pika库来实现与RabbitMQ的交互。可以使用pip命令来安装pika库:
pip install pika
步骤2:定义消息发送者
在Python代码中,我们需要一个消息发送者,用于发送消息到RabbitMQ。代码如下:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='my_queue')
channel.basic_publish(exchange='', routing_key='my_queue', body='Hello, World!')
print("Sent 'Hello, World!'")
connection.close()
在上面的代码中,我们使用pika.BlockingConnection
创建一个与RabbitMQ的连接。我们使用channel.queue_declare
方法声明一个名为my_queue
的队列。我们使用channel.basic_publish
方法发送一条消息到队列。我们指定了队列名称为my_queue
,消息内容为Hello, World!
。
步骤3:定义消息接收者
在Python代码中,我们需要定义一个消息接收者,用于从RabbitMQ接收消息。代码如下:
import pika
def callback(ch, method, properties, body):
print("Received %r" % body)
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='my_queue')
channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)
print('Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
在上面的代码中,我们使用pika.BlockingConnection
创建一个与RabbitMQ的连接。我们使用channel.queue_declare
方法声明一个名为my_queue
的队列。我们使用channel.basic_consume
方法监听队列,并指定一个回调函数callback
。当有消息到达队列时,callback
函数将被调用,并打印消息内容。
步骤4:测试
现在,我们可以运行发送者和接收者代码,并观察控制台输出。在测试时,我们先运行接收者代码,然后再运行发送者代码。在消息到达接收者时,我们可以在控制台中看到消息。
示例二:使用Direct Exchange
步骤1:安装pika库
与示例一相同。
步骤2:定义消息发送者
在Python代码中,我们需要定义一个消息发送者,用于发送消息到RabbitMQ。代码如下:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='my_direct_exchange', exchange_type='direct')
channel.basic_publish(exchange='my_direct_exchange', routing_key='my_routing_key', body='Hello, World!')
print("Sent 'Hello, World!'")
connection.close()
在上面的代码中,我们使用channel.exchange_declare
方法声明一个名为my_direct_exchange
的Direct Exchange。我们使用channel.basic_publish
方法发送一条消息到交换机。我们指定了交换机名称为my_direct_exchange
,路由键为my_routing_key
,消息内容为Hello, World!
。
步骤3:定义消息接收者
在Python代码中,我们需要定义一个消息接收者,用于从RabbitMQ接收消息。代码如下:
import pika
def callback(ch, method, properties, body):
print("Received %r" % body)
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='my_direct_exchange', exchange_type='direct')
result = channel.queue_declare('', exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='my_direct_exchange', queue=queue_name, routing_key='my_routing_key')
channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
print('Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
在上面的代码中,我们使用channel.exchange_declare
方法声明一个名为my_direct_exchange
的Direct Exchange。我们使用channel.queue_declare
方法声明一个名为my_queue
的队列。我们使用channel.queue_bind
方法将队列绑定到交换机,并指定路由键为my_routing_key
。我们使用channel.basic_consume
方法监听队列,并指定一个回调函数callback
。当有消息到达队列时,callback
函数将被调用,并打印消息内容。
步骤4:测试
现在,我们可以运行发送者和接收者代码,并观察控制台输出。在测试时,我们先运行接收者代码,然后再运行发送者代码。在消息到达接收者时,我们可以在控制台中看到消息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python RabbitMQ实现简单的进程间通信示例 - Python技术站