レッスン 1 : メッセージ交換オブジェクトの作成
新規 : 2007 年 9 月 15 日
このレッスンでは、データベースにおけるメッセージ交換をサポートするようにデータベースを設定するために必要なすべてのオブジェクトを作成する方法を学習します。
手順
Service Broker の有効化と AdventureWorks データベースへの切り替え
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。コードを実行して、
AdventureWorks
データベース内で Service Broker を有効化し、コンテキストをこのデータベースに切り替えます。USE master; GO ALTER DATABASE AdventureWorks SET ENABLE_BROKER; GO USE AdventureWorks; GO
メッセージ型の作成
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、メッセージ交換のメッセージ型を作成します。Service Broker オブジェクトは複数のデータベース エンジン インスタンスで参照されることが多いため、ほとんどの Service Broker オブジェクトの名前は URI 形式で付けます。これにより、複数のコンピュータ間で一意な名前が得られます。どちらのメッセージ型でも、メッセージが正しい形式の XML ドキュメントであるかどうかのみを検証するように指定されます。特定のスキーマを基に XML を検証することはありません。
CREATE MESSAGE TYPE [//AWDB/1DBSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//AWDB/1DBSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
コントラクトの作成
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、メッセージ交換のコントラクトを作成します。このコントラクトを使用するメッセージ交換では、発信側から対象に対しては常に //AWDB/1DBSample/RequestMessage 型のメッセージを送信し、対象から発信側に対しては常に //AWDB/1DBSample/ReplyMessage 型のメッセージを送信するように指定されます。
CREATE CONTRACT [//AWDB/1DBSample/SampleContract] ([//AWDB/1DBSample/RequestMessage] SENT BY INITIATOR, [//AWDB/1DBSample/ReplyMessage] SENT BY TARGET ); GO
対象のキューおよびサービスの作成
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、対象に対して使用するキューおよびサービスを作成します。キューは、テーブルやビューと同様の方法で同じデータベースから参照されるため、キュー名の形式はテーブル名やビュー名と似ています。CREATE SERVICE ステートメントにより、サービスと TargetQueue2DB が関連付けられます。そのため、サービスに送信されたすべてのメッセージが TargetQueue2DB に送信されます。CREATE SERVICE ではさらに、前の手順で作成した //AWDB/1DBSample/SampleContract を使用するメッセージ交換のみがこのサービスを対象サービスとして使用できるように指定されます。
CREATE QUEUE TargetQueue1DB; CREATE SERVICE [//AWDB/1DBSample/TargetService] ON QUEUE TargetQueue1DB ([//AWDB/1DBSample/SampleContract]); GO
発信側のキューおよびサービスの作成
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、発信側に対して使用するキューおよびサービスを作成します。コントラクト名が指定されていないため、他のサービスではこのサービスを対象サービスとして使用できません。
CREATE QUEUE InitiatorQueue1DB; CREATE SERVICE [//AWDB/1DBSample/InitiatorService] ON QUEUE InitiatorQueue1DB; GO
次の手順
これで、//AWDB/1DBSample/InitiatorService と //AWDB/1DBSample/TargetService の間のメッセージ交換をサポートするように AdventureWorks を構成できました。次は、この構成を使用するメッセージ交換を作成します。「レッスン 2 : メッセージ交換の開始とメッセージの送信」を参照してください。
参照
その他の技術情報
ALTER DATABASE (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
メッセージ交換のアーキテクチャ
サービスのアーキテクチャ