Service Broker アプリケーション
Service Broker アプリケーションは、1 つ以上のプログラムとそれらのプログラムで使用するデータベース オブジェクトで構成されます。アプリケーションでは、サービスと呼ばれる独立したコンポーネント間でメッセージ交換を確立し、メッセージを交換して通信を行います。アプリケーションでは、SQL Server データベースで Transact-SQL ステートメントを実行することで、Service Broker を使用します。
アプリケーション コンポーネント
Service Broker アプリケーションは、次のコンポーネントで構成されます。
1 つのタスクまたは関連する複数のタスクを実装する 1 つ以上のプログラム。SQL Server 外部では、SQL Server の Transact-SQL ステートメントを実行できる任意のプログラミング環境でアプリケーションを記述できます。SQL Server 内部では、Transact-SQL または CLR (共通言語ランタイム) 準拠の言語を使用して、ストアド プロシージャとしてアプリケーションを記述できます。
他のサービスにタスクを公開するサービス。サービスとは、一連の関連タスクにアクセス可能な名前を提供する Service Broker オブジェクトです。他のサービスでは、このサービスとのメッセージ交換を開始して、タスクを実行します。
サービス間の通信に使用するメッセージの構造と方向を定義するコントラクトとメッセージ型。
サービスのメッセージを保持するキュー。
ルートとリモート サービス バインド (オプション)。ルートは、ネットワーク アドレスをリモート サービスの名前と関連付けます。リモート サービス バインドは、サービス名をローカルのデータベース プリンシパルと関連付けます。Service Broker では、指定のプリンシパルと関連付けられている証明書を使用して、リモート サービスの認証やリモート サービスと交換するメッセージの暗号化を行います。Service Broker では、配置したアプリケーションのルートとリモート サービス バインドを構成することが許可されています。その際、アプリケーションを変更する必要はありません。これにより、管理者は、アプリケーションのコードを変更することなく、サービスを移動したり、セキュリティ資格情報を変更することができます。ルートとリモート サービス バインドの構成の詳細については、「管理 (Service Broker)」を参照してください。
Service Broker DML
通常、アプリケーションでは、インストール時にサービス定義オブジェクトを設定します。アプリケーションは、実行中、メッセージの送受信に Service Broker DML (データ操作言語) を使用します。DML ステートメントは、メッセージ、メッセージ交換、およびメッセージ交換グループの 3 つに大別されます。
メッセージ
Service Broker では、メッセージを処理できるように次の操作を提供しています。
SEND ステートメントは、特定のメッセージ交換にメッセージを送信します。
RECEIVE ステートメントは、キューから 1 つ以上のメッセージを受信します。受信するメッセージは、すべて同じメッセージ交換グループに属しています。
メッセージ交換
Service Broker では、メッセージ交換を処理できるように次の操作を提供しています。
BEGIN DIALOG CONVERSATION ステートメントは、2 つのサービス間でメッセージ交換を開始します。このメッセージ交換には 2 つのサービスだけが関連しているので、メッセージ交換は対話になります。
END CONVERSATION ステートメントは、メッセージ交換の一方の側を終了します。
BEGIN CONVERSATION TIMER ステートメントは、指定の時刻に、メッセージ交換の一方の側にダイアログ タイマ メッセージを配信します。
GET_TRANSMISSION_STATUS ステートメントは、メッセージ交換の最後の転送エラーに関する説明を返します。メッセージ交換の最後のメッセージが正常に転送された場合、このステートメントから説明は返されません。
メッセージ交換グループ
Service Broker では、メッセージ交換グループの処理に対して次の 2 つの操作を提供しています。
GET CONVERSATION GROUP ステートメントは、キュー内の次に受信可能なメッセージのメッセージ交換グループを返します。また、このステートメントでは、メッセージ交換グループをロックします。
MOVE CONVERSATION ステートメントは、メッセージ交換を、あるメッセージ交換グループから別のメッセージ交換グループに移動します。このステートメントでは、移動元と移動先の両方のメッセージ交換グループをロックします。
関連項目