Das ist die nächste vorherige Frage, die ich finden konnte: Azure Service Bus Subscription OnMessage not receiving messages.azure Service Bus nicht alle Nachrichten (nur ~ 65%)
Das gleiche passiert mir auch. Wenn ich den Namen des Themas ändere, funktioniert es wieder eine Weile. Dann ist das Servicebus-Thema wieder korrupt. Nur 65-71% der eingehenden Nachrichten. Es hilft nicht, die Subskription oder das Thema zu löschen. Der Themenname scheint nach einiger Zeit irgendwie verschmutzt zu sein. Es ist wirklich sehr schlecht, weil ich nicht sagen kann, wann das Thema beschädigt ist, außer dass das System nicht so funktioniert, wie es sollte, wenn keine Nachrichten ankommen. Ein neues Thema mit zufälligem Namen zufällig zu erstellen, scheint eine völlig schlechte Lösung zu sein.
Ich teste es durch eine Schleife in einem Prozess, Senden der Nachrichten, dann eine Schleife in einem anderen Prozess, Empfangen und Zählen. Mit einem neuen Themenname funktioniert es perfekt. Und ich weiß, dass ich nur ein Listener für das Abonnement habe, und es ist ein Peek-Lock, erfordert die Nachricht abgeschlossen sein.
Jeder? Wie kann ich das lösen?
UPDATE: Es gibt eine Frage, die hier zu finden ist. Ich habe 1 Abonnement erstellt und eine Verbindung zu ihm aufrechterhalten; Es wurde ein Thema erstellt und der Bus wurde 10 Mal neu erstellt, wobei jedes Mal 100 msg gesendet wurden. Keine Nachricht verloren. Ich habe 1 Abonnement erstellt und einen neuen Subskriptionsclient erstellt für jedes Mal, wenn der Bus neu erstellt und 100 msg gesendet wird. Verlieren 50% der Nachrichten. Scheint, dass das Thema des vorherigen Subskriptionsclient bekannt ist und die Nachrichten an die beiden weitergegeben werden?
NEUE FRAGEN: Ich versuche, meinen Kopf einzuwickeln, wie man damit umgeht. Kann jemand bestätigen, dass ein Neustart des Prozesses, der zum Erstellen eines neuen Abonnementclients mit demselben Subskriptionsnamen führt, das Thema zum Austeilen der Nachrichten zwischen dem ersten und dem zweiten Subskriptionsclient machen würde, obwohl der erste nicht mehr vorhanden ist? Da ich versuche, Fehler zu beheben, indem ich mein Subskriptionsmodul neu starte, also die Schritte zur Überprüfung des Themas durchführe, wenn ein Abonnement existiert und dann den Subskriptions-Client erstelle, habe ich Schwierigkeiten zu verstehen, wie ich das oben beschriebene vermeiden könnte. und vermeiden Sie Nachrichten, die auch an die nicht existenten Teilnehmer ausgeteilt ..
Anregung für die Lösung, atm: Behalte alten Abonnements und wenn ich Prozess neu zu starten, erstellen Sie ein neues Abonnement? Verlässt ein Fenster zwischen dem Prozess, der nach unten geht, und dem neuen Abonnement, bei dem Nachrichten nur an das "tote" Abonnement übertragen werden. Diese Nachrichten gehen verloren. Aber mindestens alle Nachrichten danach werden von dem neuen Abonnement empfangen. Man .. dieses Problem muss zuvor behandelt worden sein. Ich mache es nicht richtig. Würde hier einige Hinweise sehr schätzen.
LÖSUNG: Es geht um das richtige Werkzeug für den Job. Diese Situation erfordert eine Warteschlange, keine Pub/Sub. Alles gelöst. Ich mache die gleichen Tests wie oben, aber mit der Warteschlange, und natürlich, da entschieden wird, clientside wer eine Nachricht empfängt, gibt es kein Problem mit vorherigen (toten) Subscriptionclients, die Nachrichten von neuen nehmen. Es ist immer nur ein Warteschlangenclient am Leben, es gibt also nur denjenigen, der Nachrichten aus der Warteschlange entfernen kann.
Gute Arbeit! Bitte posten Sie Ihre Lösung als Antwort und akzeptieren Sie sie als korrekt. Das hilft den Leuten zu wissen, dass deine Frage beantwortet wurde. –