Ich habe eine PUSH/PULL
Muster in 0MQ
(Python-> C#) mit nur einem PUSH
Socket und einem PULL
Socket. Solange beide verbunden sind, unabhängig davon, wie lange es dauert, bis der Worker die Nachricht verarbeitet, bleibt die Reihenfolge der Nachrichten in der Warteschlange erhalten. Das Problem ist, wenn der Mitarbeiter für eine Weile die Verbindung trennt und dann wieder verbindet, dann alle Nachrichten, die in diesem Zeitraum in der Warteschlange eingereiht wurden, in beliebiger Reihenfolge ankommen, egal wie sie in die Warteschlange von PUSH
Socket wurden. Gibt es eine integrierte Lösung für dieses Problem oder sollte ich ein fortgeschritteneres Muster verwenden?0MQ PUSH/PULL Bestellung defekt Wenn keine PULL-Steckdosen angeschlossen sind
füge ich den Code auf der Seite PULL:
using (var receiver = new PullSocket())
{
receiver.Bind("tcp://localhost:5557");
while (true)
{
var payload = receiver.ReceiveFrameString();
log.Debug($"Payload: {payload}");
}
}
Das eigentlich ziemlich komisch. zeromq garantiert keine Bestellung, sollte aber in der Nähe bestellt werden. Welchen Transport benutzen Sie? – somdoron
Ich benutze tcp, und nach mehr Tests scheint die Reihenfolge, die ich erhalte, völlig zufällig zu sein – marsop