Почему zeromq выдает сообщения только от одного издателя после спящего режима подписчика?

#c #message-queue #zeromq

Вопрос:

Всем привет, мне нужна помощь с шаблоном публикации-подписки zeromq. У моей программы должно быть несколько издателей и подписчиков (теперь 2 издателя и 1 подписчик), каждый из которых отправляет или получает сообщения с определенной частотой, которая достигается вызовом метода sleep_for в c . Подписчикам необходимо получать сообщения с такой частотой от издателей. Например, вот скриншот рабочего журнала подписчика, получающего сообщения (экран1).

И этот порядок получения сообщений правильный, потому что первый издатель имеет частоту 5 Гц (время сна 200 мс), а второй издатель имеет частоту 25 Гц (время сна 40 мс). Видно, что порядок входящих сообщений составляет ровно от 1 до 5.

В этом примере частота абонента составляет 100 Гц (время ожидания 10 мс). И проблема в том, что если я уменьшу частоту подписчика до 10 Гц (время ожидания 100 мс), то порядок входящих сообщений каким-то образом нарушается. Вот скриншот с неправильной работой программы после этого screen2, screen3.

По какой-то причине сначала процесс получает сообщения только от первого издателя, а затем от второго. И я не знаю, почему это происходит и как это решить. Кто-нибудь может мне помочь, пожалуйста?

P.S. Я использую протокол TCP в процессе связи. Может быть, причина кроется в этом.

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.