共用方式為


路由

Service Broker 會使用路由來決定傳遞訊息的目的地。當服務在交談上傳送訊息時,SQL Server 會使用路由來找出將接收訊息的服務。當該服務回應時,SQL Server 會再次使用路由來找出起始服務。依預設,每個資料庫都包含路由,其會指定沒有明確路由之任何服務的訊息在 SQL Server 執行個體內傳遞。

路由有三個基本元件:

  • 服務名稱
    此路由為其指定位址之服務的名稱。此名稱必須與 BEGIN DIALOG 命令中的 Service Name 完全相符。

  • Broker 執行個體識別碼
    要將訊息傳送過去之特定資料庫的唯一識別碼。這是此路由指向的資料庫之 sys.databases資料表資料列中的 service_broker_guid 資料行。

  • 網路位址
    實際電腦位址、將路由限制至本機電腦的關鍵字,或指示傳輸層從服務名稱推算位址的關鍵字。網路位址可以是裝載服務之 Broker 的位址,或是轉送 Broker 的位址。

為了確定交談的路由,SQL Server 會將 BEGIN DIALOG CONVERSATION 陳述式中指定的服務名稱和 Broker 執行個體識別碼與路由中指定的服務名稱和 Broker 執行個體識別碼進行比對。未提供服務名稱的路由可與任何服務名稱相符。未提供 Broker 執行個體識別碼的路由可與任何 Broker 執行個體識別碼相符。當一個以上的路由符合交談時,SQL Server 會選取路由,如<Service Broker 路由>中所述。

SQL Server 會保證一旦目標確認第一則訊息,該交談上的所有後續訊息都會路由至相同的資料庫。不過,相同交談群組上的其他交談不會保證也會路由至相同的資料庫。如果應用程式需要相關交談上的訊息路由至相同的資料庫,則應用程式必須在開始交談時提供 Broker 執行個體識別碼。

依預設,每個使用者資料庫都包含路由 AutoCreatedLocal。此路由會比對所有服務名稱和 Broker 執行個體,並指定訊息應在目前執行個體內傳遞。對於交談的起始端和目標都存在於相同 SQL Server 執行個體中的簡單狀況,不需要其他路由。然而,建立每個服務的路由可有助於防止修改或捨棄 AutoCreatedLocal 路由。