レッスン 1 : メッセージ交換オブジェクトの作成

このレッスンでは、データベースで、そのデータベース内でのメッセージ交換をサポート可能にするすべてのオブジェクトを構築する方法を学習します。

手順

Service Broker の有効化と AdventureWorks2008R2 データベースへの切り替え

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、AdventureWorks2008R2 データベースで Service Broker を有効にして、このデータベースにコンテキストを切り替えます。

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2
          SET ENABLE_BROKER;
    GO
    USE AdventureWorks2008R2;
    GO
    

メッセージ型の作成

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、メッセージ交換のメッセージ型を作成します。Service Broker オブジェクトはデータベース エンジンの複数のインスタンスで参照されることが多いので、ほとんどの Service Broker オブジェクトには URI 形式の名前が与えられます。これにより、オブジェクトが複数のコンピューターで一意であることが保証されます。これら 2 つのメッセージ型は、メッセージが適切な形式の XML ドキュメントであることを Service Broker が検証することを指定しますが、特定のスキーマに対して 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 ステートメントは、サービスを TargetQueue1DB に関連付けます。したがって、サービスに送信されたすべてのメッセージは、TargetQueue1DB で受信されます。また 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 の間のメッセージ交換をサポートするように AdventureWorks2008R2 を適切に構成できました。次に、この構成を使用するメッセージ交換を完成させます。「レッスン 2 : メッセージ交換の開始とメッセージの送信」を参照してください。