2016-04-07 9 views
0

Ich verwende Nservicebus 4.7.5 mit azur Service Bus als Transport. Mein Endpunkt ist nur ein Abonnent von Ereignissen und er veröffentlicht nichts. Mein Endpunkt ruft nach dem Empfang eines Ereignisses einen azurblauen Speicher auf und führt eine CRUD aus.Nservicebus - vorübergehend Endpunkt

Wenn das azure-Speicherdatencenter vorübergehend offline ist, wird der Endpunkt weiterhin ausgeführt und die Nachrichten werden in die Warteschlange für nicht zustellbare Nachrichten verschoben.

Ich bin auf der Suche nach einer Möglichkeit zu stoppen meine Endpoint-Nachrichten konsumieren, wenn ein temporäres Problem in meinem Speicher Adlnd daher verhindern, dass sie in toten Buchstaben gehen.

Antwort

0

Haben Sie gedacht, dass ASB alte Nachrichten verwerfen wird und Sie überhaupt keine Nachrichten haben werden? Zumindest haben Sie sie jetzt in der Fehlerwarteschlange. Es ist viel besser für eine seltene Ausnahme zu zählen und eine Möglichkeit zu haben, es zu adressieren, wenn es passiert, anstatt einen Workaround zu erstellen.

Stellen Sie sich vor, ich habe einen Stromausfall in meinem Büro und es passiert wie einmal in sechs Monaten. Ich würde deshalb nicht damit beginnen, eine Dieselgeneratoranlage zu bauen. Stattdessen würde ich einen Plan entwickeln, wie ich diese Ausfälle mit dem, was ich bereits habe, handhaben kann.

Was Sie tun können, wenn Sie die Verarbeitung vollständig beenden möchten, ist ein circuit breaker zu implementieren. NServiceBus verwendet es, wenn der Transport ausfällt. Wenn ein Blobspeicher eine ebenso wichtige Komponente für Ihren Dienst ist, können Sie ihn ebenfalls verwenden. Nach einigen Wiederholungen wird der Dienst vollständig beendet (es sei denn, Sie entwickeln eine eigene Version).

+0

Um hinzuzufügen, was @Alexey sagte, können Sie auch Ihre SLR konfigurieren, um erweitert zu werden. Wenn die SLR auf 30 Minuten und 3 Versuche eingestellt ist, haben Sie nach 30, 60 oder 90 Minuten erneut versucht. Dies kann auch bei einem Ausfallszenario hilfreich sein. –