共用方式為


建立 Service Broker 物件

應用程式使用 Service Broker 的方式,是執行 Transact-SQL 陳述式,這些陳述式是在資料庫中所定義的 Service Broker 物件上操作。本章節描述當您為應用程式建立 Service Broker 物件時的一般考量。

概觀

Service Broker 物件會為一組特定的工作定義中繼資料與儲存體:

  • 「訊息類型」(Message types) 定義在交談中交換的資料。

  • 合約(Contract) 定義工作。每個合約會指定可用於特定交談中的訊息類型,以及交談的哪一端可以傳送訊息。

  • 「佇列」(Queue) 可儲存服務的內送訊息。

  • 服務(Service) 代表一組相關的商務程序。服務的名稱也可用以找出服務的佇列。

請注意,合約相依於一或多個訊息類型。服務相依於佇列,而且可以相依於一或多個合約。因此,會在訊息類型的後面建立合約,並在訊息類型的前面卸除。服務會在佇列與合約的後面建立,並在佇列與合約的前面卸除。

  • 如需有關這些物件的詳細資訊,請參閱<交談架構>。

建立 Service 的物件

不論您的服務是起始服務、目標服務或是這兩者,建立服務的程序會遵循相同的基本大綱。

服務定義會指定服務可以是目標的合約。相反的,應用程式可以使用服務來起始在資料庫中定義的任何合約之交談。Service Broker 會使用此方法來強制一般規則,即服務應該只接收應用程式可以處理的訊息。若要確保應用程式不會接收任意或未知類型的訊息,Service Broker 只有在對話遵循服務中指定的合約時,才會接受新對話。當交談開始時,起始服務會指定要使用的合約,因此起始服務不必包括服務定義中的合約。

若要建立服務的物件,請執行下列動作:

  1. 建立一些訊息類型,以定義您的服務將使用的訊息,以完成任何所需的通訊。您可以自行定義這些類型或是取得指令碼,以便從您的服務將通訊的服務建立者建立類型。當資料庫已經包含服務所需的訊息類型時,請略過這個步驟。

  2. 建立一或多個合約,以定義此服務可能參與的交談結構。您可以自行定義此合約或是取得指令碼,以便從您的服務將通訊的服務建立者建立合約。當資料庫已經包含服務所需的合約時,請略過這個步驟。

  3. 建立一個佇列。Service Broker 會使用此佇列來接收和儲存服務的內送訊息。如需有關建立佇列的詳細資訊,請參閱 CREATE QUEUE。每個服務必須有一個佇列。若要使程式設計和管理更加簡單,每個服務通常都會使用該服務專用的佇列。如果您的服務需要訊息保留,請為佇列指定訊息保留。

  4. 建立服務。服務定義會指定服務所使用的佇列,以及這個服務是目標的合約。

在大部分的情況下,您可以建立目標服務,然後使用為目標服務所建立的合約與訊息類型,來建立起始服務。不過,在某些情況下,您可以為已經定義的起始服務建立目標服務。在這些情況下,目標服務會使用起始服務所使用的訊息類型與合約。例如,如果您正在建立目標服務以接收事件通知,請使用合約 **https://schemas.microsoft.com/SQL/Notifications/PostEventNotification**,因為這是起始服務所使用的合約。

管理物件定義

建議您為應用程式建立所使用的 Service Broker 物件,建立 Transact-SQL 指令碼。這個 Transact-SQL 指令碼使得參考 Service Broker 物件的細節變得容易。指令碼也提供一個方法,在不同的系統上部署服務,或是在必要時重新建立服務。

如果您的應用程式在 SQL Server 執行個體之間需要傳送訊息,建議您建立一個指令碼,以定義服務的訊息類型與連絡人,以及定義佇列與服務的第二個指令碼。第一個指令碼會定義服務的介面、起始服務與目標服務共用的物件。第二個指令碼會定義服務名稱與佇列、交談其中一端的物件。

本章節內容