Service Broker オブジェクトの作成

アプリケーションは、データベースで定義された Service Broker オブジェクトを操作する Transact-SQL ステートメントを実行することで、Service Broker を使用します。ここでは、アプリケーション向けに Service Broker オブジェクトを作成するときの考慮事項について説明します。

概要

Service Broker オブジェクトでは、特定のタスクのセットに対してメタデータとストレージが定義されます。

  • "メッセージ型" では、メッセージ交換で交換されるデータが定義されます。
  • "コントラクト" では、タスクが定義されます。各コントラクトでは、特定のメッセージ交換で使用できるメッセージ型を指定します。また、メッセージ交換のどちら側がメッセージを送信できるかを指定します。
  • "キュー" には、サービスに着信するメッセージが格納されます。
  • "サービス" は、関連する一連のビジネス タスクを表します。サービスの名前は、サービスのキューを探すためにも使用されます。

コントラクトは、1 つ以上のメッセージ型に依存します。サービスはキューに依存し、さらに 1 つ以上のコントラクトに依存することができます。したがって、コントラクトはメッセージ型よりも後に作成され、メッセージ型よりも前に削除されます。サービスはキューとコントラクトの後に作成され、キューとコントラクトの前に削除されます。

サービス用のオブジェクトの作成

サービスの作成の手順は、サービスが発信側サービスであるか、発信先サービスであるか、または両方であるかに関係なく、同じ基本概要に従います。

サービスの定義では、そのサービスを発信先にできるコントラクトを指定します。その一方でアプリケーションは、サービスを使用して、データベースに定義されたコントラクトを使用するメッセージ交換を開始できます。Service Broker ではこの方法を使用して、アプリケーションが処理できるメッセージのみをサービスが受信するという規則を設定します。Service Broker は、不定の型や不明な型のメッセージをアプリケーションが受信しないように、新しいダイアログがサービスで指定されたコントラクトに従っている場合に限りそのダイアログを受け入れます。発信側サービスは、メッセージ交換が開始されるときに使用するコントラクトを指定します。したがって、発信側サービスはサービス定義にコントラクトを含める必要がありません。

サービス用のオブジェクトを作成するには、次の操作を行います。

  1. 必要な通信を実行するためにサービスが使用するメッセージを定義するメッセージ型を作成します。このようなメッセージ型はユーザー自身で定義できます。また、ユーザーのサービスが通信する相手側のサービスの作成者からスクリプトを入手して型を作成することもできます。サービスが必要とするメッセージ型がデータベースに既に含まれている場合は、この手順をスキップします。
  2. サービスが参加できるメッセージ交換の構造を定義する 1 つ以上のコントラクトを作成します。このようなコントラクトはユーザー自身で定義できます。また、ユーザーのサービスが通信する相手側のサービスの作成者からスクリプトを入手してコントラクトを作成することもできます。サービスが必要とするコントラクトがデータベースに既に含まれている場合は、この手順をスキップします。
  3. キューを作成します。Service Broker では、このキューを使用してサービスに着信するメッセージを受信および格納します。キューの作成の詳細については、「CREATE QUEUE」を参照してください。各サービスにキューを作成する必要があります。プログラミングや管理を簡単にするために、一般的に、各サービスではそのサービス専用のキューを使用します。サービスがメッセージの保有を必要とする場合、キューにメッセージの保有を指定します。
  4. サービスを作成します。サービス定義では、サービスが使用するキューと、このサービスが発信先になるコントラクトを指定します。

多くの場合、発信先サービスを作成し、次に発信先サービスに作成されたコントラクトとメッセージ型を使用して、発信側サービスを作成します。場合によっては、既に定義されている発信側サービスの発信先サービスを作成することがあります。このような場合、発信先サービスでは、発信側サービスで使用されているメッセージ型とコントラクトを使用します。たとえば、イベント通知を受信する発信先サービスを作成している場合、コントラクト https://schemas.microsoft.com/SQL/Notifications/PostEventNotification を使用します。これは、このコントラクトが発信側サービスが使用するコントラクトであるためです。

オブジェクト定義の管理

アプリケーションで使用する Service Broker オブジェクトの Transact-SQL スクリプトを作成することをお勧めします。この Transact-SQL スクリプトにより、Service Broker オブジェクトの指定内容の参照が簡単になります。また、スクリプトを使用して、別のシステムにサービスを配置したり、必要に応じてサービスを再作成したりすることもできます。

アプリケーションが SQL Server インスタンス間でメッセージを送信する必要がある場合は、サービスのメッセージ型とコントラクトを定義する 1 つのスクリプトを作成することをお勧めします。キューとサービスを定義する 2 つ目のスクリプトを作成します。最初のスクリプトでは、サービスのインターフェイス、発信側サービスと発信先サービスの両方に共通のオブジェクトを定義します。2 つ目のスクリプトでは、サービス名やキューのような、メッセージ交換のいずれか一方のオブジェクトを定義します。

このセクションの内容

トピック 説明

Service Broker メッセージ型の作成

メッセージ型とその使用方法について説明します。

Service Broker コントラクトの作成

コントラクトとその使用方法について説明します。

Service Broker キューの作成

キューとその使用方法について説明します。

Service Broker サービスの作成

サービスとその使用方法について説明します。

Service Broker オブジェクトの名前付け

Service Broker オブジェクトに名前を付ける際の考慮事項について説明します。

サービスのスクリプト例

サービスを定義する Transact-SQL コード サンプルについて説明します。

参照

その他の技術情報

コントラクト
キュー
メッセージ型
Service Broker のルーティング
Service Broker のチュートリアル

ヘルプおよび情報

SQL Server 2005 の参考資料の入手