📅  最后修改于: 2023-12-03 15:21:23.155000             🧑  作者: Mango
ZeroMQ 是一个开源的消息传递库,它支持多种消息模式,其中发布/订阅模式(Publish-Subscribe)是其中之一。
本文将介绍使用 ZeroMQ 在 Python 中实现发布/订阅模式的子示例。
import zmq
import time
# 创建一个 ZeroMQ 上下文对象
context = zmq.Context()
# 创建一个发布者
publisher = context.socket(zmq.PUB)
publisher.bind("tcp://*:5556")
# 创建一个订阅者
subscriber = context.socket(zmq.SUB)
subscriber.connect("tcp://localhost:5556")
subscriber.setsockopt_string(zmq.SUBSCRIBE, "")
# 发送一条消息
msg = "Hello, World!"
publisher.send_string(msg)
print("Sent message: %s" % msg)
# 等待消息
while True:
msg = subscriber.recv_string()
print("Received message: %s" % msg)
time.sleep(1)
代码分为四个部分:
首先,我们需要创建一个 ZeroMQ 上下文对象,它是 ZeroMQ 的核心对象。我们可以通过 zmq.Context() 函数来创建一个对象。
接着,我们创建了一个发布者和一个订阅者。发布者使用 zmq.PUB 套接字类型,它会将消息广播到所有连接的订阅者;订阅者使用 zmq.SUB 套接字类型,并调用 setsockopt_string 方法来订阅所有消息。
发送消息时,发布者通过 send_string 方法发送一个字符串类型的消息。订阅者通过 recv_string 方法接收来自发布者的消息。在这个例子中,我们只发送了一条消息。在实际应用中,可以循环发送多条消息。
最后,我们通过 while 循环持续接收消息。由于 ZeroMQ 是异步的,所以即使没有消息也不会阻塞程序。我们可以通过 sleep 函数使程序休眠一段时间后再次接收消息。
这个子示例演示了如何使用 ZeroMQ 在 Python 中实现发布/订阅模式。通过使用 ZeroMQ,我们可以轻松地实现分布式系统和并发应用。