[zeromq-dev] ZeroMQ Secure Broadcast with Proxy losing messages using C# clrzmq

up201503995 up201503995 at fe.up.pt
Mon Apr 27 18:40:54 CEST 2020


I am doing some performance tests on ZeroMQ to compare it with others 
like RabbitMQ and ActiveMQ.

In my broadcast tests and to avoid "The Dynamic Discovery Problem" as 
referred by ZeroMQ documentation I have used a proxy. In my scenario, I 
am using 50 concurrent publishers each one sending 500 messages with 1ms 
delay between sends. Each message is then read by 50 subscribers. And as 
I said I am losing messages, each of the subscribers should receive a 
total of 25000 messages and they are each receiving between 5000 and 
10000 messages only.

I am using Windows and C# .Net client clrzmq4 (4.1.0.31).
Code to reproduce the issue is available at 
https://pastebin.com/SEqEhSL1


I have already tried some solutions that I found on some posts:

     I have set linger to TimeSpan.MaxValue
     I have set ReceiveHighWatermark to 0 (as it is presented as 
infinite, but I have tried also Int32.MaxValue)
     I have set checked for slow start receivers, I made receivers start 
some seconds before publishers
     I had to make sure that no garbage collection is made to the socket 
instances (linger should do it but to make sure)
     I have a similar scenario (with similar logic) using NetMQ and it 
works fine. The other scenario does not use security though and this one 
does (and that's also the reason why I use clrzmq in this one because I 
need client authentication with certificates that is not yet possible on 
NetMQ).
     I have also tested this scenario with clrzmq but with no security 
and it worked

Does someone know another thing to check? Or has it happened to anyone 
before?

Thanks,

Davide Costa


More information about the zeromq-dev mailing list