Python 循环接收rabbitmq消息,接到消息并开始做相关处理,同时又不耽误下一次接收Mq消息,代码实现
时间: 2023-11-19 13:05:25 浏览: 75
详解Python操作RabbitMQ服务器消息队列的远程结果返回
可以使用 `pika` 库实现循环接收 RabbitMQ 消息,在接收到消息后开启一个新的线程处理消息,这样就不会耽误下一次接收消息了。以下是一个示例代码:
```python
import pika
import threading
# 连接 RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# 创建队列
channel.queue_declare(queue='my_queue')
# 处理消息的函数
def process_message(channel, method, properties, body):
print("Received message:", body)
# 开启一个新的线程处理消息
t = threading.Thread(target=handle_message, args=(body,))
t.start()
# 确认收到消息
channel.basic_ack(delivery_tag=method.delivery_tag)
# 接收消息
channel.basic_consume(queue='my_queue', on_message_callback=process_message)
print('Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
# 处理消息的函数
def handle_message(msg):
# 处理消息的代码
pass
```
在以上代码中,我们定义了一个 `process_message` 函数来处理接收到的消息。当接收到消息后,我们开启一个新的线程来处理消息,同时调用 `channel.basic_ack` 来确认收到消息。这样就可以在不耽误下一次接收消息的情况下处理当前接收到的消息了。
阅读全文