建立 Service Broker 佇列

佇列會保留服務的內送訊息。為了簡化處理,應用程式通常會為每個服務建立一個佇列,而不會讓多個服務使用相同的佇列。

設定佇列的保留選項時,會造成處理訊息之後保留訊息。因為保留會降低應用程式效能,所以只有在應用程式需要持續存取傳送和接收的完整訊息時,才需要指定保留。如需有關訊息保留的詳細資訊,請參閱<訊息保留>。

對於不需要內部啟動的應用程式,請勿在佇列定義上指定啟動子句。

對於使用內部啟動的應用程式,佇列定義包括預存程序的名稱,要啟動的 SQL Server 之最大讀取器數目,以及在啟動預存程序之前要模擬的資料庫原則名稱。

佇列的名稱不包括在訊息的網路格式中。佇列是結構描述所擁有的物件。因此,佇列名稱會遵循 SQL Server 命名慣例。如需有關命名的詳細資訊,請參閱<命名 Service Broker 物件>。

預存程序啟動

佇列可能與預存程序相關聯。SQL Server 會在佇列中有要處理的訊息時,啟動預存程序。這個程序的自動啟動允許 Service Broker 應用程式,根據目前在應用程式中所載入的處理來動態擴展。每個由 Service Broker 啟動的預存程序會在不同的執行緒中執行。當佇列指定預存程序時,Service Broker 會視需要啟動預存程序的新執行個體,最多可達為佇列所指定的最大執行個體數目。

啟動的預存程序通常會處理一個或多個訊息,並傳回引發訊息的服務之回應。當訊息到達的速度比預存程序處理訊息還快時,Service Broker 會啟動預存程序的另一個執行個體,最大可達佇列所定義的最大數目。當程序在佇列中有一小段時間找不到可用的訊息時,啟動的預存程序通常會存在。

使用啟動預存程序是設計 Service Broker 應用程式最常見的方式。不過,其他設計可能會更加符合特定應用程式的需求。在 SQL Server 中可以執行 Transact-SQL 批次的任何應用程式,都可以傳送和接收訊息。訊息也可由任何預存程序處理,不論預存程序是由 SQL Server 啟動、由 SQL Server Agent 啟動、由外部應用程式執行,或是從 SQL Server Management Studio 或 SQL Server ExpressManagement Studio 等工具互動執行。