Service Broker 應用程式

適用於:SQL ServerAzure SQL 受控執行個體

Service Broker 應用程式由一或多個程式以及這些程式使用的資料庫物件組成。 應用程式會在稱為服務的獨立元件之間建立交談,然後在這些交談中交換訊息,藉以進行通訊。 應用程式會在 SQL Server 資料庫中執行 Transact-SQL 陳述式,以使用 Service Broker。

應用程式元件

Service Broker 應用程式的組成為:

  • 一或多個「程式」,可實作工作或一組相關工作。 在 SQL Server 外部,應用程式可以在任何程式設計環境中撰寫,以在 SQL Server 中執行 Transact-SQL 陳述式。 在 SQL Server 內部,應用程式可以使用 Transact-SQL 或 Common Language Runtime (CLR) 相容語言,撰寫為預存程序。

  • 「服務」,可公開其他服務的工作。 服務是一個 Service Broker 物件,會針對一組相關的工作提供可定址的名稱。 其他服務會利用這個服務開始交談以執行工作。

  • 「合約」和「訊息類型」,可定義通訊中,在服務間使用的訊息結構和訊息方向。

  • 「佇列」,可保留服務的訊息。

  • 「路由」和「遠端服務繫結」(選擇性)。 路由會讓網路位址與遠端服務的名稱產生關聯。 遠端服務繫結會讓服務名稱與本機資料庫主體產生關聯。 Service Broker 會使用與指定主體相關聯的憑證來處理遠端服務的授權以及與遠端服務交換的訊息加密。 Service Broker 允許在應用程式處於部署時,同時設定路由和遠端服務繫結,而不需要對應用程式進行任何變更。 這可讓管理員移動服務並變更安全性認證,而不必對應用程式的程式碼進行任何變更。 如需設定路由和遠端服務繫結的詳細資訊,請參閱管理 (Service Broker)

Service Broker DML

應用程式通常會在安裝時設定服務定義物件。 執行時,應用程式會使用 Service Broker 資料操作語言 (DML) 傳送與接收訊息。 DML 陳述式分成三大類:訊息、交談與交談群組:

訊息

Service Broker 提供下列運算以支援使用訊息:

  • SEND 陳述式會在特定的交談上傳送訊息。

  • RECEIVE 陳述式會從佇列接收一或多個訊息。 接收的所有訊息都屬於相同的交談群組。

交談

Service Broker 提供下列運算以支援使用交談:

  • BEGIN DIALOG CONVERSATION 陳述式會在兩個服務之間開始交談。 交談只涉及兩個服務,因此交談是一種對話。

  • END CONVERSATION 陳述式會結束交談的一端。

  • BEGIN CONVERSATION TIMER 陳述式會在特定的時間,將對話計時器訊息傳遞到交談的一端。

  • GET_TRANSMISSION_STATUS 陳述式會針對交談,傳回上一個傳輸錯誤的描述。 如果最後一次嘗試傳輸交談訊息成功,此陳述式就不會傳回描述。

交談群組

Service Broker 提供兩個運算以使用交談群組:

  • GET CONVERSATION GROUP 陳述式會針對佇列中的下一個可接收訊息,傳回交談群組識別碼。 此陳述式也會鎖定交談群組。

  • MOVE CONVERSATION 陳述式會在交談群組之間移動交談。 此陳述式會同時鎖定原始交談群組與目的地交談群組。

另請參閱