ZMQ REP,知道谁发送请求(ZMQ REP, knowing who send the requ

2019-07-30 18:29发布

我米目前使用ZMQ与蟒蛇。 服务器使用REP插座。

我有一个办法,recv的消息时,才知道谁送的呢? 如果收到2个消息,我只需要知道,如果他们来自同一个用户或没有,所以例如一个UID就足够了。

Answer 1:

它看起来像你想实现在服务器端异步请求处理:你让服务器接受请求,处理它们异步,并发送响应返回给客户只要响应数据可用于每个请求。 当然现在:你怎么知道,你就大功告成了处理请求,将其发送回给哪个客户端后?

通过简单的REP插座,ZMQ确保你不会被强制执行碰上这类问题recv() -> send(), recv() -> send()顺序性。 换句话说,你做了之后recv()上REP插座,你必须做一个send()之前recv()再次从它ING。 响应将被发送回你从邮件客户端,而且也毫无疑问的客户端的地址,因为它只有一个客户在同一时间。

但是,这并不能真正帮助,当你想并行请求处理,不是吗? 有很多情况下,当REP的行为过于严格,这正是多部分消息和路由器(或XREP)插座是。 XREP打破recv() -> send() REP的步调一致,但会导致一个问题,因为我们在前面看到的-你怎么知道的发送应答的客户端回,如果多个客户端连接? 为了完成这项工作,在XREP ZMQ增加了一个消息部分的消息的前部,像一个信封,其包括连接的身份,它recv()倒是从请求。

还有的ZMQ指南中关于一整章先进的请求-回复模式 。 您还可以找到用于处理异步请求的例子在这里和ZMQ连接处理的一个很好的简短说明这里 。



Answer 2:

阅读http://zguide.zeromq.org/page%3aall#Transient-vs-Durable-Sockets ,你只能得到你正在使用的插座的标识...不是你所连接的任何同行的插座至。

这是说,只是生成发送信息到消息。 这应该是容易做到(或者与每个客户端UUID或特定名称)。



文章来源: ZMQ REP, knowing who send the request
标签: zeromq pyzmq