6

I'm refering to the 'A Request-Reply Broker' in the Zeromq documentation: http://zguide.zeromq.org/chapter:all

I'm getting the general gist of the app: it acts like an intermediary and routes messages from the client to the server and back again.

What I'm not getting though is how it makes sure the correct response from a server is sent to the correct client which originally made the request. I don't see anything in the code example which makes sure about this.

Now in the example they only send 1 message (hello) and 1 response (world), so even if messages are mixed up it doesn't matter, but I'm guessing that the testclient and server are kept deliberately simple.

Any thoughts are welcome...

4

2 回答 2

9

所有 zeromq 套接字都隐含地具有与其关联的标识。(您可以使用zmq_getsockopt()获得此身份。)

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

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

如果您在ZMQ 指南中搜索“身份” ,您应该会找到所有您想知道的有关身份和套接字路由如何工作的详细信息。

于 2011-04-25T21:26:18.560 回答
1

好的,在第 3 章中,他们突然解释说,有一个潜在的“信封”概念,req/resp 模式无形地使用了这个概念。

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

于 2010-12-06T21:38:18.230 回答