我无法理解 zeromq 指南中的 majordomo C 代码的一个方面。当工作人员回复请求时,它如何被路由到正确的客户端。当请求发送给工作人员时,我看不到客户身份是如何传达的?所以我无法理解回复是如何正确路由的。这是 mdbroker.c 中向工作人员发送消息的函数。
static void
s_worker_send (worker_t *self, char *command, char *option, zmsg_t *msg)
{
msg = msg? zmsg_dup (msg): zmsg_new ();
// Stack protocol envelope to start of message
if (option)
zmsg_pushstr (msg, option);
zmsg_pushstr (msg, command);
zmsg_pushstr (msg, MDPW_WORKER);
// Stack routing envelope to start of message
zmsg_wrap (msg, zframe_dup (self->identity));
if (self->broker->verbose) {
zclock_log ("I: sending %s to worker",
mdps_commands [(int) *command]);
zmsg_dump (msg);
}
zmsg_send (&msg, self->broker->socket);
}
我可能不了解身份和路由器套接字是如何工作的。任何帮助将不胜感激。我还是卡在这里。。