服務架構

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

本節說明資料庫物件,其指定使用 Service Broker 的應用程式基本設計。

在設計階段,Service Broker 應用程式會指定下列物件:

  • 訊息類型 - 定義在應用程式間交換的訊息名稱。 選擇性提供訊息的驗證。

  • 合約 - 指定給定交談中的訊息方向和類型。

  • 佇列 - 可儲存訊息。 此儲存機制允許服務之間的非同步通訊。 Service Broker 佇列還有其他優點,例如自動鎖定同一交談群組中的訊息。

  • 服務 - 是交談的可定址端點。 Service Broker 訊息會從某個服務傳送至另一個服務。 服務會指定要保存訊息的佇列,並指定哪個服務可做為目標的合約。 合約提供給服務一組定義明確的訊息類型。

Service Broker 應用程式會使用先前清單中的 SQL Server 物件來進行交談。 如果程式可以在 SQL Server 中執行 Transact-SQL 陳述式,即可使用 Service Broker。 應用程式可以是以 Transact-SQL 或 CLR 相容的語言撰寫的預存程序,也可以是連線到 SQL Server 執行個體的外部程式。

下圖顯示 Service Broker 服務:

Relationship of Service Broker objects

如圖所示,ProcessExpenses 合約指定了三種類型的訊息:SubmitExpenseAcceptDenyExpenseReimbursementIssued。 合約列出執行費用補償工作之交談所需的訊息類型。 ProcessExpenses 合約會管理 ProcessExpense 服務和使用 ProcessExpense 服務起始交談的任何服務之間的所有交談。 ProcessExpense 服務會將內送和外寄訊息儲存在 ExpenseQueue 佇列中。 ExpenseProcessing 預存程序會從此佇列接收訊息、處理訊息,並在需要回覆時將訊息傳送回佇列以路由至適當的 Broker。

本節內容

  • 訊息類型
    交談的參與者必須同意每則訊息的名稱和內容。 訊息類型會定義名稱和內容。

  • 合約
    合約定義了應用程式會使用何種訊息類型來完成特定工作。

  • 佇列
    佇列會儲存 Service Broker 訊息。

  • 服務
    Service Broker 服務是特定商務工作或商務工作集合的名稱。

另請參閱