python 使用rabbitmq

在使用Python与RabbitMQ进行消息队列通信时,你可以使用pika库,这是RabbitMQ的官方Python客户端。以下是如何使用pika库来发送和接收消息的基本步骤。

安装pika

首先,你需要安装pika库。你可以通过pip来安装:

css 复制代码
pip install pika

发送消息

要发送消息,你需要连接到RabbitMQ服务器,创建一个channel,然后声明一个队列,并发送消息。

css 复制代码
import pika
 
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
 
# 声明一个队列,如果队列不存在将会自动创建
channel.queue_declare(queue='hello')
 
# 发送一个消息到队列
channel.basic_publish(exchange='',
                     routing_key='hello',
                     body='Hello World!')
print(" [x] Sent 'Hello World!'")
 
# 关闭连接
connection.close()

接收消息

要接收消息,你需要连接到RabbitMQ服务器,创建一个channel,声明一个队列,并订阅该队列以接收消息。

css 复制代码
import pika
 
def callback(ch, method, properties, body):
    print(f" [x] Received {body}")
 
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
 
# 声明一个队列,如果队列不存在将会自动创建
channel.queue_declare(queue='hello')
 
# 订阅队列以接收消息
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

注意事项:

连接参数:在pika.ConnectionParameters中,你可以指定主机名(默认为localhost)、端口号(默认为5672)、用户名和密码等。例如:pika.ConnectionParameters(host='your_host', port=5672, credentials=pika.PlainCredentials('username', 'password'))。

错误处理:在实际应用中,你可能需要添加错误处理逻辑,例如重试连接、处理网络中断等。

自动应答:在basic_consume中设置auto_ack=True表示自动应答。如果你需要手动应答(例如,只有在处理完消息后才确认),可以设置为auto_ack=False并在处理完消息后调用ch.basic_ack(delivery_tag)。

交换器(Exchange):上面的示例中使用了默认的交换器(空字符串''),这意味着消息将直接发送到指定的队列。RabbitMQ支持多种类型的交换器,如direct, topic, fanout, 和 headers。你可以根据需要选择或创建不同类型的交换器。例如,使用direct交换器:

css 复制代码
channel.exchange_declare(exchange='my_exchange', exchange_type='direct')
channel.basic_publish(exchange='my_exchange', routing_key='hello', body='Hello World!')

接收方也需要声明相同的交换器和队列绑定规则。

通过以上步骤,你可以使用Python和pika库与RabbitMQ进行基本的消息发送和接收操作。

相关推荐
云程笔记2 小时前
004.环境搭建基础篇:Python、CUDA、cuDNN、PyTorch/TensorFlow安装与版本兼容性踩坑
pytorch·python·tensorflow
知行合一。。。7 小时前
Python--04--数据容器(总结)
开发语言·python
架构师老Y7 小时前
008、容器化部署:Docker与Python应用打包
python·容器·架构
lifewange7 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
pluvium278 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
2401_827499998 小时前
python项目实战09-AI智能伴侣(ai_partner_5-6)
开发语言·python
PD我是你的真爱粉8 小时前
MCP 协议详解:从架构、工作流到 Python 技术栈落地
开发语言·python·架构
ZhengEnCi8 小时前
P2G-Python字符串方法完全指南-split、join、strip、replace的Python编程利器
python
是小蟹呀^8 小时前
【总结】LangChain中工具的使用
python·langchain·agent·tool
宝贝儿好8 小时前
【LLM】第二章:文本表示:词袋模型、小案例:基于文本的推荐系统(酒店推荐)
人工智能·python·深度学习·神经网络·自然语言处理·机器人·语音识别