[zeromq-dev] ROUTER not routing?

Justin Karneges justin at affinix.com
Fri Feb 7 23:16:23 CET 2014

It is my understanding that being able to route requires the socket to 
have an identity mapping in its routing table for the peer.

For peers that do not explicitly specify their own identity, then I 
believe you are correct that routing is not possible until at least one 
message has been received from the peer. It is at this point that the 
ROUTER socket will make up an identity for this peer and store it in its 
routing table.

However, for peers that *do* explicitly specify their own identity (as I 
am doing), then this identity information is delivered immediately after 
the connection is established, allowing routing to the peer even if the 
peer has not sent a message yet.

I should have been more clear in my original message. The B program is 
explicitly specifying a random UUID as the identity of its socket before 

On 02/07/2014 02:06 PM, Panu Wetterstrand wrote:
> I did not quite get the problem but could this be because (I think)
> router is not able to route messages to socket from which it has not
> reveived data first...
> 7.2.2014 22.51 kirjoitti "Justin Karneges" <justin at affinix.com
> <mailto:justin at affinix.com>>:
>     Hi,
>     1) ROUTER in program A is set to connect to a bind socket in program B.
>     2) Both programs are started, and the connection is established.
>     3) A determines B's socket identity out-of-band, and is able to send
>     messages to B.
>     3) B is terminated and the connection is lost.
>     4) B is started again, and the connection is re-established.
>     5) A determines B's socket identity out-of-band, and is no longer able
>     to send messages to B.
>     It seems this problem does not happen if B retains the same socket
>     identity across reconnects. However, if it uses a random identity (to be
>     discovered out-of-band by A), then routing will never work again after
>     the first restart of B. The A program must be restarted in order to make
>     things right again.
>     My guess is that each connect queue on a ROUTER socket is somehow bound
>     for life against the first identity it sees. Is this intentional
>     behavior?
>     Thanks,
>     Justin
>     _______________________________________________
>     zeromq-dev mailing list
>     zeromq-dev at lists.zeromq.org <mailto:zeromq-dev at lists.zeromq.org>
>     http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev

More information about the zeromq-dev mailing list