Service Broker キューの作成
サービスに着信するメッセージはキューに保存されます。処理を簡素化するため、一般的にはアプリケーションで複数のサービスに同一のキューを使用することはなく、サービスごとに 1 つのキューが作成されます。
キューの保有オプションを設定すると、メッセージは処理の後もダイアログが終了するまで保存されます。保有オプションを設定するとアプリケーションのパフォーマンスが低下するので、送受信した実際のメッセージに永続的にアクセスする必要がある場合に限り、このオプションを指定してください。メッセージ保有の詳細については、「メッセージの保有」を参照してください。
内部アクティブ化を使用しないアプリケーションは、キューの定義でアクティブ化句を指定しないでください。
内部アクティブ化を使用するアプリケーションは、ストアド プロシージャ名、起動される SQL Server のキュー リーダーの最大数、およびストアド プロシージャ起動前に権限を借用するデータベース プリンシパルの名前をキューの定義に指定します。
キューの名前はメッセージのネットワーク形式では指定しません。キューは、スキーマが所有するオブジェクトです。したがって、キュー名は SQL Server の名前付け規則に従います。名前付けの詳細については、「Service Broker オブジェクトの名前付け」を参照してください。
ストアド プロシージャのアクティブ化
キューはストアド プロシージャと関連付けることができます。キューに処理するメッセージがある場合、SQL Server によってストアド プロシージャがアクティブ化されます。この自動アクティブ化処理により、Service Broker アプリケーションが、現在の処理負荷に応じて動的にスケールを変更できます。Service Broker によりアクティブになったストアド プロシージャは、それぞれが個別のスレッドで実行されます。キューでストアド プロシージャを指定している場合、キューで指定されているインスタンスの最大数になるまで、必要に応じてストアド プロシージャの新しいインスタンスが起動されます。
一般的に、アクティブなストアド プロシージャはメッセージを 1 つ以上処理し、メッセージ送信元のサービスに応答を返します。ストアド プロシージャでメッセージを処理するよりも早くメッセージが着信した場合、キューで定義されている最大数に達するまでストアド プロシージャの新しいインスタンスが起動されます。一般的に、アクティブなストアド プロシージャは、利用できるメッセージが一定期間内キューに存在しないと判断した時点で終了します。
Service Broker アプリケーションをデザインする場合、アクティブ化ストアド プロシージャを使用するのが一般的です。ただし、アプリケーションによっては、他のデザインを採用した方が要件に適している場合があります。SQL Server で Transact-SQL バッチを実行できるアプリケーションはメッセージを送受信できます。メッセージの処理は、ストアド プロシージャが SQL Server によりアクティブ化されたか、SQL Server エージェントにより起動されたか、外部アプリケーションから実行しているか、SQL Server Management Studio や SQL Server 2005 Express Manager などのツールからインタラクティブに実行しているかを問わず、どのストアド プロシージャでも可能です。
参照
概念
その他の技術情報
CREATE QUEUE (Transact-SQL)
メッセージ交換のアーキテクチャ
キュー