Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从ZMQ子队列获取特定消息_Python_Filter_Zeromq_Pyzmq - Fatal编程技术网

Python 从ZMQ子队列获取特定消息

Python 从ZMQ子队列获取特定消息,python,filter,zeromq,pyzmq,Python,Filter,Zeromq,Pyzmq,我有一个使用ZMQ的python消息传递应用程序。每个对象都有一个发布和一个子队列,它们相互连接。在某些特定情况下,我希望在子队列中等待特定的消息,将不感兴趣的消息留给以后处理 现在,我正在获取所有消息并将那些我对Python队列不感兴趣的消息排队,直到找到我正在等待的消息。但他的意思是,在每个处理路由中,我需要首先在Python队列中检查旧消息。有更好的方法吗?zmq发布服务器不进行任何排队。。。当没有子系统可用于接收这些消息时,它会删除这些消息 在您的情况下,更好的方法是创建一个只订阅特定感

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


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

zmq发布服务器不进行任何排队。。。当没有子系统可用于接收这些消息时,它会删除这些消息

在您的情况下,更好的方法是创建一个只订阅特定感兴趣消息的通用sub。通过这种方式,您可以启动所有不同的sub(即使在一个线程内并使用zmq轮询器),它们都将处理来自PUB的消息


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

我已经有一个IOLoop正在运行,我可以轻松地添加另一个回调。但我看到的问题是,在很多情况下,我只需要一条信息。因此,我必须创建一个套接字,订阅一个主题,然后删除该套接字。如果您只需要一个套接字,我会考虑不使用子模式。。。使用req/rep套接字告诉“发布者”您感兴趣的消息,并让其响应请求的消息。你试图在适合另一种模式的情况下使用Pub Sub模式是的,但我必须经常问出版商:你有我的消息吗?。我认为的另一件事是使用PUB/SUB通知订阅方消息已准备就绪,然后订阅方使用REP/REQ获取消息。您的上一个工作系列可能会工作。问题是,如果您有多个SUB连接到正在查找同一消息的发布服务器,则可能会达到竞态条件,在该竞态条件下SUB首先获得req/rep。如果您每个邮件订阅只有一个子邮件,那么这不会是一个问题。。。