Hi Joris:

This is an ancient bug/feature in ZeroMQ, and some earlier discussions can be 
found [here](https://github.com/zeromq/libzmq/issues/2267).

There are a couple of things going on here that contribute to the problem:

- Connections in ZeroMQ are done asynchronously — when you call connect, that 
initiates the connection, but the connection is not actually made until some 
time later (as per Brett’s email).

- Subscription information is exchanged between sub and pub at connect time — 
if sub connects to pub, the subscription information is carried in the initial 
connection message.  However if pub connects to sub, then an additional message 
exchange is needed to send subscription information, and this takes addl. time.

One solution is to sleep after connect to allow all this behind-the-scenes 
stuff to happen. (You’ll see that in the unit tests, which are liberally 
sprinkled with “msleep(SETTLE_TIME)” calls).  Of course, this is not a reliable 
solution.

If you need to be certain that a particular message arrives (or not), you’re 
going to need an additional protocol layer on top of vanilla ZeroMQ.  There are 
several out there, but I think highly of this one 
(https://github.com/nyfix/OZ).  If you’re OK with using the MAMA API, OZ can 
significantly flatten the ZeroMQ learning curve.

Good luck!

Bill 

> On Dec 15, 2022, at 9:40 AM, Joris OFFOUGA <[email protected]> wrote:
> 
> Hi Brett,
> 
> Thank you for your reply. I added sleep after SUB connection but it doesn't 
> work but when I change from a tcp socket to ipc it works. Any difference 
> between tcp or ipc socket?
> 
> Best Regards,
> 
> Joris
> 
>> Le 15 déc. 2022 à 15:07, Brett Viren <[email protected]> a écrit :
>> 
>> On Thu, Dec 15, 2022 at 8:58 AM Brett Viren <[email protected]> wrote:
>>> This is imitated by our app code with bind()/connect()
>>> calls but ultimately completed behind the scene by libzmq.
>> 
>> I mean *initiated* no imitated!
>> 
>> -B.
>> _______________________________________________
>> zeromq-dev mailing list
>> [email protected]
>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
> 
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev

_______________________________________________
zeromq-dev mailing list
[email protected]
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to