来自zeromq指南的Majordomo代码

时间:2013-09-06 19:38:17

标签: zeromq

我无法理解zeromq指南中找到的majordomo C代码的一个方面。当工作人员回复请求时,它如何被路由到正确的客户端。当请求发送给工作人员时,我无法看到如何传达客户端身份?因此无法理解回复如何正确路由。这是mdbroker.c中的函数,它向worker发送一条消息。

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);
}

我可能不了解身份和路由器套接字的工作原理。任何帮助将不胜感激。我仍然被困在这里..

1 个答案:

答案 0 :(得分:0)

请求以消息信封开头,其中包括代理看到的客户端的标识。工作人员获取此信封,保存并将其放回到回复中。然后代理可以将回复路由到正确的客户端。它内置于REQ和REP套接字类型。