[zeromq-dev] detecting messages being dropped on a PUB socket?
Arnaud Loonstra
arnaud at sphaero.org
Tue Dec 8 22:05:47 CET 2020
Hey all,
I might me missing something but is there any way of detecting messages
being dropped due to the high watermark on a PUB socket?
It's clear how to do this is on a socket that blocks in the mute state,
but dropping message on mute is not?
for example:
// test hwm
sock_t *push = zsock_new(ZMQ_PUB);
zsock_t *pull = zsock_new(ZMQ_SUB);
zsock_set_rcvhwm(pull, 100);
zsock_set_sndhwm(push, 100);
zsock_set_sndtimeo(push,0);
zsock_bind(push, "inproc://test");
zsock_connect(pull, "inproc://test");
zsock_set_subscribe(pull, "");
zclock_sleep(10);
int rc = 0;
int count = 0;
while( rc == 0 && count < 10000) {
rc = zstr_send(push, "BOE");
count++;
}
The count will be 10000 due zstr_send dropping messages but returning 0;
If we then receive the buffered messages we wil receive 20 messages
(rcvhwm + sndhwm)
int count2 = 0;
char *m = "";
while ( m )
{
char *m = zstr_recv_nowait(pull);
count2++;
}
Rg,
Arnaud
More information about the zeromq-dev
mailing list