Deepstream-test4 with RabbitMQ , not all sent messages are seen inside RabbitMQ UI

using DS 5 on T4.
Running deepstream-test4 with RabbitMQ. only publishing messages and viewing them using the RabbitMQ web UI. (There is no messages consumer).A message is sent per each object . There is a print inside the message broker each time a message is sent. In addition, I attach an incremental id to each of the messages. When running the app , from the prints ,I see that 6000 messages are sent , however, queue in the RabbitMQ UI contains only ~4700 messages . From observing the ids ,it is possible to tell that these are the first ~4700 messages. I thought maybe this is a matter of maximal queue size. However, when running test4 again without purging messages, I see that additional 4700 messages are added to the queue. How is it possible to make sure that all 6000 messages are inside the queue?

the details implementation about message sending for the 3 adapters not open sourced , please specify where did you print, and will try to repro your issue.

Hello, I have added the print inside gstnvmsgbroker.c. Immediately after:
err = self->nvds_msgapi_send_async(self->connHandle, self->topic,
(uint8_t *)payload->payload,
nvds_msgapi_send_callback, self);

From my understanding this is the line that sends the messages. I counted the number of objects as well and the number was identical to the number of counts this function was called. (as there is a message per object). However, as I wrote, this was not the number of messages in the queue.

Just another thing, I modified the deepstream-test4 to send messages per each object in each frame and not only for the first object. I have limited the number of messages to be the first 6000 messages (first 6000 objects). I am not sure that this issue will be reproduced with a small number of messages

Sorry for the late, the senario reproed, checking internally if expected or if one bug.


Sorry, last test make a mistake, i try to repro your issue, but can not. here is my test experiment. test4 sample, please see the patch, sending message per frame, and just the first object in the frame, total 1441 messages sent, see the log, just print the last two line,
object counts: 1440
Frame Number = 1440 Vehicle Count = 6 Person Count = 2
object counts: 1441
Frame Number = 1441 Vehicle Count = 0 Person Count = 0
End of stream
and receiving side, receive also the same number 1441, run 2 times.
nvidia@nvidia-desktop:~ sudo rabbitmqctl list_queues Listing queues myqueue 1441 nvidia@nvidia-desktop:~ sudo rabbitmqctl list_queues
Listing queues
myqueue 2882
please let me know if you have more concerns.test4.patch (2.1 KB)

Hello, As I wrote in my second reply (from Feb 10) “I modified the deepstream-test4 to send messages per each object in each frame and not only for the first object” and I am using the payload type that sends a message per object…So the amount of messages is large (In my case I have limited to 6000). Anyway, I think that messages are get lost due to their high rate. This cannot be demonstrated when sending message only for the first object… In the real world scenario , we would like to send messages for all objects and not only the first one.

Sorry for the delay.
Please reduce the sleep time,
self->nvds_msgapi_do_work (self->connHandle);
// wait 10ms.
g_usleep (3 * 1000); //original is 10ms
rebuild the nvmsgbroker plugin, and try again. after this, i do not have this issue.

Thanks a lot, I appreciate the effort!!!