python如何实现使用消息队列:程序1和程序2都订阅同一个消息队列程序1将设备状态变更封装成消息发布到消息队列中程序2从消息队列中订阅消息并进行处理。
Python可以使用第三方库如pika或kafka-python来实现使用消息队列。下面以pika为例,给出实现步骤:
1.安装pika库
pip install pika
2.程序1代码:
import pika
# 连接rabbitmq服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 定义消息队列名
queue_name = 'device_status'
# 声明消息队列,如果不存在则创建
channel.queue_declare(queue=queue_name)
# 模拟设备状态变更
device_id = '1001'
status = 'offline'
# 封装消息
message = f"Device {device_id} is {status}"
# 发布消息到消息队列
channel.basic_publish(exchange='', routing_key=queue_name, body=message)
print(f" [x] Sent '{message}' to '{queue_name}'")
# 关闭连接
connection.close()
3.程序2代码:
import pika
# 连接rabbitmq服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 定义消息队列名
queue_name = 'device_status'
# 声明消息队列,如果不存在则创建
channel.queue_declare(queue=queue_name)
# 定义回调函数,处理收到的消息
def callback(ch, method, properties, body):
print(f" [x] Received '{body.decode()}' from '{queue_name}'")
# 订阅消息队列,绑定回调函数
channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
print(f" [*] Waiting for messages from '{queue_name}'...")
# 开始消费消息
channel.start_consuming()
这样程序1就可以将设备状态变更封装成消息发布到消息队列中,程序2从消息队列中订阅消息并进行处理
原文地址: https://www.cveoy.top/t/topic/gA09 著作权归作者所有。请勿转载和采集!