Я пытаюсь реализовать шаблон проектирования sub pub с использованием фреймворка zeromq.Идея состоит в том, чтобы запустить подписчика, а затем запустить издателя.Подписчик прослушает 100 сообщений, а издатель опубликует 100 сообщений.Пока все хорошо ... Однако на самом деле происходит то, что даже после того, как подписчик уже запущен и работает, когда запускается издатель, не все сообщения получаются подписчиком (100 сообщений будут получены подписчиком, еслииздатель отправит не менее 500 сообщений).Похоже, что первые сообщения, отправленные издателем, не отправляются подписчику.
Есть идеи?
Заранее спасибо, Омер.
Код подписчика (запускается перед издателем)
int i=0;
zmq::context_t context (1);
zmq::socket_t subscriber (context, ZMQ_SUB);
subscriber.connect("tcp://localhost:5556");
subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0);
for (int update_nbr = 0; update_nbr < 100; update_nbr++)
{
zmq::message_t update;
subscriber.recv(&update);
i++;
std::cout<<"receiving :"<<i<<std::endl;
}
Код подписчика (запускается после подписчика)
zmq::context_t context (1);
zmq::socket_t publisher (context, ZMQ_PUB);
publisher.bind("tcp://*:5556");
int i = 0;
for (int update_nbr = 0; update_nbr < 100; update_nbr++)
{
// Send message to all subscribers
zmq::message_t request (20);
time_t seconds;
seconds = time (NULL);
char update [20]="";
sprintf (update, "%ld", seconds);
memcpy ((void *) request.data (), update,strlen(update));
publisher.send(request);
i++;
std::cout << "sending :" << i << std::endl;
} * * тысячу двадцать-один