Skip to main content
 首页 » 编程设计

python之从 ZMQ 子队列获取特定消息

2025年05月04日9pander-it

我有一个使用 ZMQ 的 python 消息传递应用程序。每个对象都有一个 PUB 和一个 SUB 队列,它们相互连接。在某些特定情况下,我想等待 SUB 队列中的特定消息,而将我不感兴趣的消息留给以后处理。

现在,我正在获取所有消息并将那些我不感兴趣的消息排队到 Python 队列中,直到找到我正在等待的消息。但他的意思是,在每个处理路由中,我需要先在 Python 队列中检查旧消息。有没有更好的办法?

请您参考如下方法:

zmq 发布者不进行任何排队...当没有 SUB 可用于接收这些消息时,它会丢弃消息。

在您的情况下,更好的方法是创建一个通用订阅者,他只会订阅某些感兴趣的消息。这样你就可以启动所有不同的 SUB(甚至在一个线程内并使用 zmq 轮询器)并且它们都将处理来自 PUB 的消息......

这就是 PUB/SUB 模式的主要用途。订阅者只订阅感兴趣的消息,因此无需在每个循环中循环遍历消息队列以查找感兴趣的消息。