Service Broker の典型的な使用方法

Service Broker は、非同期処理を実行する必要のあるアプリケーションや、処理を多数のコンピュータに分散する必要のあるアプリケーションに役立ちます。Service Broker の典型的な使用方法には、次のものがあります。

  • 非同期トリガ

  • 信頼性の高いクエリ処理

  • 信頼性の高いデータ収集

  • サーバー側でのクライアント アプリケーションに対する分散処理

  • クライアント アプリケーションのデータ連結

  • 大規模バッチ処理

非同期トリガ

オンライン トランザクション処理 (OLTP) システムなどの、トリガを使用する多くのアプリケーションには、Service Broker が効果的です。トリガは、Service Broker サービスに作業を要求するメッセージをキューに入れます。トリガは、要求された作業を実際に実行するわけではありません。代わりに、トリガは要求された作業に関する情報を格納したメッセージを作成し、作業を実行するサービスにそのメッセージを送信します。その後、トリガは復帰します。

元のトランザクションがコミットすると、Service Broker はメッセージを送信先サービスに送信します。作業は、そのサービスが実装されているプログラムにより、別個のトランザクションで実行されます。この作業を別個のトランザクションで実行することにより、元のトランザクションは直ちにコミットすることができます。アプリケーションは、作業の実行中に元のトランザクションが開いたままになることで生じるシステムのパフォーマンス低下を回避できます。

信頼性の高いクエリ処理

一部のアプリケーションでは、コンピュータの故障や停電などの問題が発生した場合でも、高い信頼性でクエリを処理できる必要があります。高い信頼性でクエリを処理する必要のあるアプリケーションは、Service Broker のサービスにメッセージを送信することにより、クエリ処理を送信できます。そのサービスが実装されているアプリケーションは、メッセージを読み取り、クエリを実行し、結果を返します。これら 3 つの操作は、すべて同じトランザクションで実行されます。トランザクションがコミットする前に障害が発生すると、トランザクション全体がロールバックされ、メッセージはキューに戻されます。コンピュータが復旧すると、アプリケーションは再起動され、メッセージを再び処理します。

信頼性の高いデータ収集

多数のソースからデータを収集するアプリケーションは、Service Broker を利用して、高い信頼性でデータを収集できます。たとえば、複数のサイトで実行される小売り用アプリケーションでは、Service Broker を使用して、取引情報を中央のデータ ストアに送信できます。Service Broker は信頼性の高い、非同期のメッセージ配信を提供できるため、各サイトは、一時的に中央のデータ ストアへの接続ができなくなった場合でも、取引の処理を続行できます。Service Broker のセキュリティは、メッセージが間違った宛て先に送信されないようにしたり、送信中のデータを保護したりするために役立ちます。

サーバー側でのクライアント アプリケーションに対する分散処理

複数の SQL Server データベースにアクセスする大規模なアプリケーションにとって、Service Broker は効果的です。たとえば、書籍を注文するための Web アプリケーションでは、サーバー側で Service Broker を使用することにより、注文、顧客、在庫、およびクレジットに関するデータを格納した異なるデータベース間で情報を交換することができます。Service Broker はメッセージ キューイングおよび信頼性の高いメッセージ配信を提供できるため、アプリケーションは、いずれかのデータベースが使用不可または負荷が大きくなった場合でも、受注を続行することができます。このシナリオでは、Service Broker は分散 OLTP システムのフレームワークとして機能します。

クライアント アプリケーションのデータ連結

複数のデータベースからの情報を同時に使用または表示する必要のあるアプリケーションにとって、Service Broker は効果的です。たとえば、複数の場所からのデータを 1 つの画面に連結する顧客サービス アプリケーションは、Service Broker を使用することにより、これらの複数の要求を逐次的にではなく並列的に実行して、アプリケーションの応答時間を大幅に短縮できます。顧客サービス アプリケーションは、複数の異なるサービスに要求を並列的に送信し、サービスが要求に応答すると、応答を収集して、結果を表示します。

大規模バッチ処理

大規模なバッチ処理を実行する必要のあるアプリケーションは、Service Broker が提供するキューイングおよび並列処理を利用して、大量の作業を迅速に効率的に実行できます。アプリケーションは、処理対象のデータを Service Broker キューに格納します。プログラムは定期的にキューからデータを読み取り、処理します。アプリケーションは、Service Broker が提供する信頼性の高いメッセージングを利用することにより、要求が発行されたコンピュータとは別のコンピュータ上でバッチ処理を実行できます。