啟動和停止佇列
使用 ALTER QUEUE 陳述式啟動和停止佇列。當佇列啟動時,佇列可用於傳送和接收訊息。當佇列停止時,Service Broker 不會將新的訊息傳遞至佇列,也不允許應用程式從佇列接收訊息。
管理員通常會以無法使用狀態建立佇列。這可防止 Service Broker 將訊息排入佇列,直到服務的所有物件都己建立為止。當服務準備接收訊息時,管理員會使用下列陳述式啟用佇列:
ALTER QUEUE dbo.ExpenseQueue WITH STATUS = ON ;
下列陳述式會讓佇列無法用於接收:
ALTER QUEUE dbo.ExpenseQueue WITH STATUS = OFF ;
當佇列無法用於接收時,應用程式將無法處理佇列中的訊息。因為 Service Broker 保證訊息僅可做為接收作業的一部份離開佇列,所以無法從停止的佇列中移除訊息。Service Broker 設計成允許在佇列繼續接收訊息時進行維護,因此一旦佇列啟用就基本不需要將其停止。因為大多數啟動預存程序會在 RECEIVE 作業失敗時或無可用訊息時結束,所以停止佇列的其中一個原因就是要取代持續接收訊息之服務的啟動預存程序。
當訊息到達不可用的佇列時,Service Broker 會將訊息保存在資料庫的傳輸佇列中,而不會將其傳遞至佇列。