2010-12-06 60 views
6

我指的的Zeromq文档中的“请求 - 应答经纪人:http://zguide.zeromq.org/chapter:all任何人都可以解释请求 - 答复经纪人zeromq示例?

我得到了应用程序的一般要点是:它就像从客户的中介和消息路由到服务器然后再回来。

我不明白的是它如何确保服务器的正确响应被发送到最初发出请求的正确客户端。我没有看到代码示例中的任何内容确保了这一点。

现在在这个例子中,他们只发送1条消息(hello)和1个响应(world),所以即使消息混淆了也没有关系,但我猜测testclient和服务器是故意保持简单。

有什么想法,欢迎...

回答

9

所有的zeromq套接字都隐含有一个与它们相关的标识。 (您可以通过zmq_getsockopt()获得此身份。)

对于双向套接字类型而非XREQ或XREP,此标识将自动作为通过套接字发送的每条消息的一部分进行传输。 REP套接字使用此标识将响应消息路由回合适的套接字。这具有自动路由的效果。

在引擎盖下,身份通过多部分信息传输。多部分消息中的第一条消息将包含套接字标识。随后会出现一条空的消息,随后是用户指定的所有消息。 REQ和REP套接字自动处理这些前缀消息。但是,如果您使用的是XREQ或XREP套接字,则需要自己填充这些身份信息。

如果您在ZMQ Guide上搜索“身份”,您应该找到关于身份和套接字路由如何工作的所有细节。

1

在第3章,他们所有的好突然解释说,有一个“信封”,其中请求/ RESP模式invisubly使用的基本概念。

这解释了它是如何工作的。

相关问题