2010-12-06 14 views
6

estoy refiriendo a la 'Un intermediario de solicitud-respuesta' en la documentación Zeromq: http://zguide.zeromq.org/chapter:all¿Alguien puede explicar el ejemplo de solicitud-respuesta corredor zeromq?

Me estoy poniendo la esencia general de la aplicación: Actúa como un intermediario y enruta los mensajes desde el cliente al servidor y de regreso.

Lo que no estoy logrando es cómo se asegura de que se envíe la respuesta correcta de un servidor al cliente correcto que originalmente realizó la solicitud. No veo nada en el ejemplo de código que se asegure de esto.

Ahora, en el ejemplo, solo envían 1 mensaje (hola) y 1 respuesta (mundo), por lo que incluso si los mensajes se mezclan no importa, pero supongo que el cliente y el cliente se mantienen deliberadamente simples .

Cualquier pensamiento son bienvenidos ...

Respuesta

9

Todos los zócalos zeromq tienen una identidad asociada implícitamente. (Puede obtener esta identidad con zmq_getsockopt().)

Para tipos de zócalos bidireccionales no XREQ o XREP, esta identidad se transfiere automáticamente como parte de cada mensaje enviado a través del zócalo. El socket REP usa esta identidad para enrutar el mensaje de respuesta al socket apropiado. Esto tiene el efecto de enrutamiento automático.

Debajo del capó, las identidades se transfieren a través de mensajes de varias partes. El primer mensaje en un mensaje multiparte contendrá la identidad del socket. Seguirá un mensaje vacío, seguido de todos los mensajes especificados por el usuario. Los enchufes REQ y REP tratan estos mensajes prefijados automáticamente. Sin embargo, si está utilizando sockets XREQ o XREP, debe completar estos mensajes de identidad usted mismo.

Si busca "identidad" en el ZMQ Guide, debe encontrar todos los detalles que siempre querrá saber sobre cómo funcionan las identidades y el enrutamiento de socket.

1

Ok en el capítulo 3 que, de repente, a explicar que hay un concepto subyacente de un 'sobre' que utiliza el patrón invisubly req/resp.

Esto explica cómo funciona.

Cuestiones relacionadas