Starten und Beenden einer Warteschlange

Verwenden Sie die ALTER QUEUE-Anweisung, um eine Warteschlange zu starten oder zu beenden. Wenn eine Warteschlange gestartet wird, kann sie Nachrichten senden und empfangen. Wenn eine Warteschlange beendet ist, übermittelt Service Broker neue Nachrichten nicht mehr an diese Warteschlange und ermöglicht es Anwendungen nicht mehr, Nachrichten aus der Warteschlange zu empfangen.

Administratoren erstellen oft Warteschlangen, die aber noch nicht verfügbar sind. Dadurch kann Service Broker so lange keine Nachrichten in diese Warteschlangen platzieren, bis alle Objekte für einen Dienst erstellt wurden. Wenn der Dienst zum Empfangen von Nachrichten bereit ist, macht der Administrator die Warteschlange mit der folgenden Anweisung verfügbar:

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = ON ;

Die Anweisung unten versetzt die Warteschlange in einen Status, in dem sie keine Nachrichten empfangen kann:

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = OFF ;

Wenn sich eine Warteschlange in diesem Status befindet, kann eine Anwendung keine Nachrichten in der Warteschlange verarbeiten. Da Service Broker gewährleistet, dass eine Nachricht die Warteschlange nur im Zuge eines Empfangsvorgangs verlässt, besteht keine Möglichkeit, Nachrichten aus einer beendeten Warteschlange zu entfernen. Service Broker ist so konzipiert, dass Wartungsarbeiten zulässig sind, während die Warteschlange weiterhin Nachrichten empfängt. Deshalb ist es nur selten notwendig, eine Warteschlange zu beenden, nachdem sie verfügbar gemacht wurde. Da die meisten gespeicherten Aktivierungsprozeduren beendet werden, wenn ein RECEIVE-Vorgang einen Fehler erzeugt oder wenn keine Nachrichten mehr verfügbar sind, besteht ein Grund zum Beenden der Warteschlange darin, eine gespeicherte Aktivierungsprozedur für einen Dienst zu ersetzen, der ständig Nachrichten empfängt.

Ist eine Warteschlange nicht verfügbar, speichert Service Broker die Nachrichten in der Übertragungswarteschlange für die Datenbank, anstatt sie an die Warteschlange zu übermitteln.

Siehe auch

Verweis