Python RabbitMQ 使用详细介绍
RabbitMQ 是一个开源的消息队列系统,支持多种消息传递协议。在 Python 中,可以使用 pika 库来实现 RabbitMQ 的功能。本文将详细讲解 Python 中 RabbitMQ 的使用方法,并提供两个示例说明。
环境准备
在开始使用 RabbitMQ 之前,需要安装 RabbitMQ 和 pika 库。安装 RabbitMQ 的方法可以参考官方文档,安装 pika 库可以使用以下命令:
pip install pika
示例一:使用 Python 实现消息队列
使用以下代码实现消息队列:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
queue_name = 'hello'
channel.queue_declare(queue_name)
def callback(ch, method, properties, body):
print("Received message:", body)
channel.basic_consume(queue_name, on_message_callback=callback, auto_ack=True)
channel.start_consuming()
在上述代码中,connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
表示连接到 RabbitMQ 服务器,channel.queue_declare(queue_name)
表示声明一个名为 hello
的队列,channel.basic_consume(queue_name, on_message_callback=callback, auto_ack=True)
表示开始监听名为 hello
的队列,callback
表示消息处理的回调函数。
使用以下代码发送消息:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
queue_name = 'hello'
channel.queue_declare(queue_name)
message = "Hello, world!"
channel.basic_publish(exchange="", routing_key=queue_name, body=message)
connection.close()
在上述代码中,channel.basic_publish(exchange="", routing_key=queue_name, body=message)
表示将消息发送到名为 hello
的队列中。
示例二:使用 Python 实现消息确认机制
使用以下代码实现消息确认机制:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
queue_name = 'hello'
channel.queue_declare(queue_name)
def callback(ch, method, properties, body):
print("Received message:", body)
ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_consume(queue_name, on_message_callback=callback, auto_ack=False)
channel.start_consuming()
在上述代码中,auto_ack=False
表示开启手动确认模式,ch.basic_ack(delivery_tag=method.delivery_tag)
表示确认消息的处理结果。
使用以下代码发送消息:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
queue_name = 'hello'
channel.queue_declare(queue_name, durable=True)
message = "Hello, world!"
properties = pika.BasicProperties(delivery_mode=2)
channel.basic_publish(exchange="", routing_key=queue_name, body=message, properties=properties)
connection.close()
在上述代码中,channel.queue_declare(queue_name, durable=True)
表示声明一个持久化的名为 hello
的队列,pika.BasicProperties(delivery_mode=2)
表示消息是持久化的。
总结
本文详细讲解了 Python 中 RabbitMQ 的使用方法,并提供了两个示例说明:使用 Python 实现消息队列,以及使用 Python 实现消息确认机制。在使用 RabbitMQ 时,需要根据实际需求选择合适的特性,并注意消息的可靠性和正确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python RabbitMQ 使用详细介绍(小结) - Python技术站