2014-06-24 50 views
0

当使用SUB型ØMQ插槽,可以使用主题在ZeroMQ REP插座

sub_socket.setsockopt_string(zmq.SUBSCRIBE, 'topic') 

是相同的可能,还REP插槽,允许工人只处理特定的主题,让其他主题,以不同的工人?

我很害怕,这是不可能的,引用http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/patterns/pubsub.html

在ØMQ的当前版本,过滤发生在用户侧,而不是发行方。

但是,我仍在问,是否有一些技巧可以实现,因为这样的功能会对我的基础架构产生巨大的影响。

回答

1

没有。我可以假设你有一个REQDEALER服务器套接字将工作发送给REP工作人员,然后将完成的工作回复给服务器?而且您正在寻找一种方法让您的服务器与特定客户端通信,而不是以循环方式传递任务?

不能这样做。 See here,那些套接字是唯一的,总是循环。如果要与特定的客户端通信,则必须拥有只与该客户端通信的套接字,或者必须从客户端开始通信(切换套接字配对,以便工作者请求准备好的任何工作以及服务器回应它,然后工作人员创建一个新的请求与完成的工作)。做其他事情变得更加复杂。

+0

你的假设绝对正确,这正是我想要做的。好的,谢谢你的明确答案,好像我必须为每个主题实例化单独的''DEALER':( – Tregoreg

+0

是否有一个原因,通信必须从服务器启动?请求/路由器,并开始从该工作人员可能会大大简化您的架构,[ZMQ指南](http://zguide.zeromq.org/page:all)中有几个示例。 – Jason

+0

我希望我没有使用不正确的术语 - 我是使用这种拓扑结构:https://github.com/imatix/zguide/raw/master/images/fig17.png。 沟通从客户端开始,但不幸的是,我有几个主题,每个主题都需要很多的RAM,因此在不同的机器上需要专门的工作人员(或服务,如果遵循图的术语),如果我可以使用服务订阅主题,事情会很好,很简单,但因为你说这是不合适的我必须为每个主题实例化单独的''ROUTER'''''DEALER''代理。 – Tregoreg