verlorene Nachrichten auf zeromq pub sub

Ich versuche zu implementieren, das pub-sub-design pattern mit zeromq Rahmen.
Die Idee ist, starten Sie eine Abonnenten-und danach starten die publisher.
Die Teilnehmer hören zu 100 Nachrichten und die publisher veröffentlichen wird 100 Nachrichten.
So weit So gut...
Aber was tatsächlich passiert, ist, dass auch, dass der Abonnent bereits laufen, wenn der publisher ist gestartet , nicht alle Nachrichten empfangen werden, durch den Teilnehmer (100 Nachrichten abgeholt werden, die von den Abonnenten, wenn die publisher senden mindestens 500 Mitteilung). Es scheint, dass die ersten Nachrichten von dem Verleger werden nicht an den Abonnenten gesendet.

Irgendwelche Ideen?

Vielen Dank im Voraus,
Omer.

Abonnenten-code (ins Leben gerufen, bevor der publisher)

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;
}

Publisher-code (gestartet, nachdem der Teilnehmer)

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;

}

InformationsquelleAutor der Frage omer bach | 2011-09-19

Schreibe einen Kommentar