Python使用zmq简单操作

最近发现ZMQ中的ROUTER-DEALER模式十分好用,经销商DEALER需要配置一个ID,对应路由ROUTER根据ID来收发消息;

context = zmq.Context() 
socket = context.socket(zmq.ROUTER)
socket.bind("tcp://*:5555")

while True:
    recv_id,data = socket.recv_multipart()
    print(recv_id.decode(),data.decode())
    socket.send_multipart([recv_id,'recv ok'.encode()]) 
context = zmq.Context() 
socket = context.socket(zmq.DEALER)
socket.setsockopt_string(zmq.IDENTITY,'id_123')
socket.connect("tcp://localhost:5555")

while True:
    data = input("input your data:")
    socket.send(data.encode())
    response = socket.recv()
    print(response)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZMQ是一个高效的消息传递库,支持多种传输协议,包括TCP、UDP、inproc等。它的广泛应用领域包括分布式系统、高性能计算、实时数据处理等。 ZMQ提供了多种通信模式,其中发布订阅模式是其中之一,用于多个订阅者同时订阅同一个主题的消息。下面是使用ZMQ实现发布订阅模式的Python代码示例。 首先,需要安装ZMQ库。可以使用pip命令进行安装: ``` pip install pyzmq ``` 然后,在发布者端,需要创建一个ZMQ的上下文对象,用于创建socket。然后,创建一个PUB类型的socket,并绑定到指定的地址和端口: ```python import zmq context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind("tcp://*:5555") ``` 在订阅者端,也需要创建一个ZMQ的上下文对象,用于创建socket。然后,创建一个SUB类型的socket,并连接到发布者的地址和端口: ```python import zmq context = zmq.Context() socket = context.socket(zmq.SUB) socket.connect("tcp://localhost:5555") ``` 订阅者还需要指定要订阅的主题,可以使用socket的subscribe方法来实现: ```python topic = "news" socket.subscribe(topic.encode()) ``` 发布者可以使用socket的send方法来发送消息,并指定消息的主题: ```python topic = "news" message = "latest news" socket.send_multipart([topic.encode(), message.encode()]) ``` 订阅者可以使用socket的recv方法来接收消息: ```python message = socket.recv_multipart() topic = message[0].decode() content = message[1].decode() print(f"Received message: {content} under topic {topic}") ``` 完整的示例代码如下: Publisher: ```python import zmq context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind("tcp://*:5555") while True: topic = input("Enter topic: ") message = input("Enter message: ") socket.send_multipart([topic.encode(), message.encode()]) ``` Subscriber: ```python import zmq context = zmq.Context() socket = context.socket(zmq.SUB) socket.connect("tcp://localhost:5555") topic = input("Enter topic to subscribe: ") socket.subscribe(topic.encode()) while True: message = socket.recv_multipart() topic = message[0].decode() content = message[1].decode() print(f"Received message: {content} under topic {topic}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值