キューの開始と停止

キューを開始および停止するには、ALTER QUEUE ステートメントを使用します。キューを開始すると、キューがメッセージを送信および受信できるようになります。キューを停止すると、Service Broker が新しいメッセージをキューに配信しなくなるため、アプリケーションがキューからメッセージを受信できなくなります。

多くの場合、管理者は、利用できない状態のキューを作成します。これにより、サービスのオブジェクトがすべて作成されるまで、Service Broker はメッセージをキューに配置できなくなります。サービスがメッセージを受信する準備が完了すると、管理者は次のステートメントを使用してキューを利用できる状態にします。

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = ON ;

次のステートメントを使用すると、キューがメッセージを受信できなくなります。

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = OFF ;

キューがメッセージを受信できなくなると、アプリケーションがキュー内のメッセージを処理できなくなります。Service Broker では、受信操作の一部としてのみキュー内からのメッセージの削除が保証されます。そのため、停止したキューからメッセージを削除することはできません。Service Broker は、キューがメッセージを受信中の場合でも、メンテナンスを実行できるようにデザインされています。したがって、いったんキューを使用可能にすると、キューを停止する必要はほとんどありません。アクティブ化ストアド プロシージャの大部分が終了するのは、RECEIVE 操作が失敗するか、または使用できるメッセージがなくなったときです。そのため、定期的にメッセージを受信するサービスのアクティブ化ストアド プロシージャを置き換えることが、キューを停止する理由の 1 つになります。

使用できないキューにメッセージが到着すると、Service Broker はこのメッセージをキューに配信するのではなく、データベースの転送キューに保持します。

関連項目

参照