De Service Broker-wachtrij starten en stoppen

Van toepassing op:SQL ServerAzure SQL Managed Instance

Gebruik de ALTER QUEUE instructie om een wachtrij te starten en te stoppen. Wanneer een wachtrij wordt gestart, is de wachtrij beschikbaar voor het verzenden en ontvangen van berichten. Wanneer een wachtrij is gestopt, levert Service Broker geen nieuwe berichten in de wachtrij en kunnen toepassingen geen berichten uit de wachtrij ontvangen.

Beheerders maken vaak wachtrijen met een niet-beschikbare status. Met deze status voorkomt u dat Service Broker berichten in de wachtrij plaatst totdat alle objecten voor een service worden gemaakt. Wanneer de service klaar is om berichten te ontvangen, maakt de beheerder de wachtrij beschikbaar met de volgende instructie:

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = ON;

Met de volgende instructie is de wachtrij niet beschikbaar voor ontvangst:

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = OFF;

Wanneer een wachtrij niet beschikbaar is voor ontvangst, kan een toepassing de berichten in de wachtrij niet verwerken. Omdat Service Broker garandeert dat een bericht alleen de wachtrij verlaat als onderdeel van een ontvangstbewerking, is er geen manier om berichten uit een gestopte wachtrij te verwijderen. Service Broker is ontworpen om onderhoud mogelijk te maken terwijl de wachtrij berichten blijft ontvangen, dus het is zelden nodig om een wachtrij te stoppen zodra de wachtrij beschikbaar is gesteld. Omdat de meeste opgeslagen activeringsprocedures worden afgesloten wanneer een RECEIVE bewerking mislukt of wanneer er geen berichten meer beschikbaar zijn, is een reden voor het stoppen van de wachtrij om een opgeslagen activeringsprocedure te vervangen voor een service die voortdurend berichten ontvangt.

Wanneer een bericht binnenkomt voor een wachtrij die niet beschikbaar is, bevat Service Broker het bericht in de overdrachtswachtrij voor de database in plaats van het bericht in de wachtrij te plaatsen.