我在Zeromq文档中引用了“A Request-Reply Broker”:http://zguide.zeromq.org/chapter:all
我正在获得应用程序的一般要点:它就像一个中间人,将消息从客户端路由到服务器然后再返回。
我没有得到的是如何确保将服务器的正确响应发送到最初发出请求的正确客户端。我在代码示例中没有看到任何确定这一点的内容。
现在在示例中他们只发送1条消息(hello)和1条响应(world),所以即使消息混淆也没关系,但我猜测testclient和服务器是故意保持简单的。
欢迎任何想法......
答案 0 :(得分:9)
所有zeromq套接字都隐式具有与之关联的标识。 (您可以使用zmq_getsockopt()获取此身份。)
对于非XREQ或XREP的双向套接字类型,此标识将自动作为通过套接字发送的每条消息的一部分进行传输。 REP套接字使用此标识将响应消息路由回适当的套接字。这具有自动路由的效果。
在幕后,身份通过多部分消息传输。多部分消息中的第一条消息将包含套接字标识。随后将显示一条空消息,然后是用户指定的所有消息。 REQ和REP套接字自动处理这些带前缀的消息。但是,如果您使用的是XREQ或XREP套接字,则需要自己填充这些身份消息。
如果您在ZMQ Guide上搜索“身份”,您应该找到有关身份和套接字路由如何工作的所有详细信息。
答案 1 :(得分:1)
在第3章中,它们突然解释了req / resp模式无法使用的“包络”的基本概念。
这解释了它的工作原理。