2017-12-08 3 views
4

Ich habe eine Webanwendung, die Rebus mit Azure Service Bus-Warteschlangen als Transport verwendet. Es ist mit Simple Injector Container konfiguriert.Untersuchen der laufenden Rebus-Handler und Beenden des Rebus beim Akzeptieren neuer Nachrichten

Während der App-Nutzung möchte ich verhindern, dass Rebus neue Nachrichten akzeptiert und die Anzahl der Nachrichten überprüft, die gerade bearbeitet werden. Ich kann dann entscheiden, einige Sekunden zu warten, bis der HF fertig ist.

Ist das möglich?

EDIT: Ich weiß über die Existenz von SetWorkerShutdownTimeout und Advanced.Workers.SetNumberOfWorkers Methoden. Kann ich mit Advanced.Workers.SetNumberOfWorkers (0) erreichen, was ich vorhabe?

Antwort

1

Ich kann dann entscheiden, einige Sekunden zu warten, bis der Handler fertig ist.

Wenn Sie den Bus (oder den Container, die Sie immer tun sollten, wenn die Anwendung heruntergefahren wird, was wiederum den Bus verfügt) verfügen, werden bis zu 30 Sekunden alle Nachrichten zur Zeit behandelt wird standardmäßig aufgegeben Verarbeitung abschließen.

Nach dem Start des Herunterfahrens werden keine neuen Nachrichten empfangen.

Konnte ich erreichen, was ich ziele, indem ich Advanced.Workers.SetNumberOfWorkers (0) nenne?

Ja :), wenn Sie rufen

bus.Advanced.Workers.SetNumberOfWorkers(0); 

Worker-Threads entfernt werden, was zu einem nicht mehr Nachrichten führenden empfangen werden.

Aber Sie sollten wissen, dass durch einfaches Entsorgen Ihres SimpleInjector-Containers alle Nachrichten, die gerade behandelt werden, eine Chance erhalten, zu beenden.

Verwandte Themen