#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. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.