zmq 按消息类型接收
时间: 2023-08-18 21:05:24 浏览: 134
为什么使用ZMQ-ZeroMq通讯模式
ZMQ支持多种消息类型,包括REQ/REP、PUB/SUB、PUSH/PULL等,不同类型的消息传递方式有不同的接收方式。
以PUB/SUB为例,PUB/SUB模式是一种发布者-订阅者模式,发布者把消息发送到一个或多个订阅者,订阅者接收到消息后进行处理。在ZMQ中,订阅者需要创建一个SUB套接字,然后使用subscribe()函数订阅感兴趣的消息类型,最后使用recv()函数接收消息。
下面是一个简单的Python示例代码,演示如何使用ZMQ按消息类型接收消息:
```python
import zmq
# 创建一个SUB套接字
context = zmq.Context()
socket = context.socket(zmq.SUB)
# 订阅感兴趣的消息类型
socket.subscribe(b"message_type1")
socket.subscribe(b"message_type2")
# 连接到消息发送者
socket.connect("tcp://localhost:5555")
# 循环接收消息
while True:
message = socket.recv()
message_type, message_data = message.split(b" ", 1)
if message_type == b"message_type1":
# 处理message_type1类型的消息
print("Received message_type1 message: {}".format(message_data))
elif message_type == b"message_type2":
# 处理message_type2类型的消息
print("Received message_type2 message: {}".format(message_data))
```
在上面的代码中,我们先创建了一个SUB套接字,然后使用subscribe()函数订阅了两种消息类型,最后使用recv()函数循环接收消息。在接收到消息后,我们首先从消息中提取出消息类型和消息数据,然后根据消息类型进行相应的处理。
阅读全文