次の方法で共有


ルート

Service Broker は、ルートを使用してメッセージの配信先を決定します。メッセージ交換でサービスからメッセージが送信されると、SQL Server はルートを使用してメッセージを受信するサービスを検索します。受信するサービスが応答すると、SQL Server は再びルートを使用して発信側サービスを検索します。既定では、明確なルートがないサービスのメッセージを SQL Server インスタンス内で配信するように指定するルートが各データベースに含まれています。

ルートには、次の 3 つの基本的な要素があります。

  • サービス名
    このルートの指定先のサービスの名前です。この名前は、BEGIN DIALOG コマンドの Service Name と正確に一致している必要があります。
  • ブローカ インスタンス識別子
    メッセージの送信先となる特定のデータベースの一意の識別子です。これは、このルートが指し示すデータベースの sys.databases テーブル行にある service_broker_guid 列です。
  • ネットワーク アドレス
    マシンの実際のアドレス、ローカル マシンへのルートを制限するキーワード、またはトランスポート層でサービス名からアドレスを推定することを示すキーワードです。ネットワーク アドレスには、サービスをホストするブローカのアドレス、または転送を行うブローカのアドレスを指定できます。

SQL Server は、メッセージ交換のルートを決定するために、BEGIN DIALOG CONVERSATION ステートメントで指定されたサービス名およびブローカ インスタンス識別子を、ルートに指定されているサービス名およびブローカ インスタンス識別子と照合します。サービス名が指定されていないルートは、任意のサービス名と照合します。ブローカ インスタンス識別子が指定されていないルートは、任意のブローカ インスタンス識別子と照合します。メッセージ交換で複数のルートが一致した場合、SQL Server は「Service Broker のルーティング」で説明されているとおりにルートを選択します。

SQL Server では、対象者が最初のメッセージを容認すると、そのメッセージ交換のすべての後続メッセージが、確実に同じデータベースにルーティングされるようになっています。ただし、同じメッセージ交換グループの他のメッセージ交換が、同じデータベースにルーティングされる保証はありません。関連するメッセージ交換のメッセージを同じデータベースにルーティングする必要があるアプリケーションでは、メッセージ交換を開始する際に、ブローカ インスタンス識別子を指定する必要があります。

各ユーザー データベースには、既定で AutoCreatedLocal というルートが含まれています。このルートは、任意のサービス名および任意のブローカ インスタンスと一致し、現在のインスタンス内でメッセージを配信するように指定します。メッセージ交換の発信側と対象の両方が同じ SQL Server インスタンスに存在する単純なシナリオでは、追加のルートは必要ありません。ただし、サービスごとにルートを作成しておけば、AutoCreatedLocal ルートが変更または削除された場合の安全対策となります。

参照

概念

Service Broker のルーティング
Service Broker の ID の管理

その他の技術情報

BEGIN DIALOG CONVERSATION (Transact-SQL)
CREATE ROUTE (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手