次の方法で共有


BizTalk Server を使用して SQL から複数の受信場所でクエリ通知を受信する

同じデータベース内の同じテーブル (従業員など) のクエリ通知を受信するように構成された、異なる BizTalk アプリケーションの一部として複数の受信場所が作成されているシナリオを考えてみましょう。 同じテーブルに 100 個のレコードが挿入されると、すべての受信場所に通知メッセージが表示されます。 複数の受信場所で効果的に通知を受信するには、BizTalk アプリケーションから操作を呼び出します。この方法では、1 つの受信場所で通知を受信した場合、もう一方の受信場所は同じ通知を受け取りません。 そのため、複数の場所で受信した通知を効果的に負荷分散できます。

受信通知を負荷分散するオーケストレーションを設定するために必要なタスクは、 BizTalk Server を使用して SQL からクエリ通知を増分的に受信する場合と同じです。 このトピックでは、2 つのアプローチの唯一の違いを示します。

Load-Balancing 複数の受信場所にわたるクエリ通知

トピック「BizTalk Server を使用して SQL からクエリ通知を増分的に受信する」と同様に、既に通知されているレコードに対して UPDATE ステートメントを実行して増分通知を構成しました。 負荷分散を構成するには、通知されたレコードを削除するストアド プロシージャを実行できます。 たとえば、次の定義でPROCESS_EMPLOYEEストアド プロシージャについて考えてみましょう。

DECLARE @var int  
SELECT TOP 1 @var = Employee_ID FROM Employee  
SELECT * FROM Employee WHERE Employee_ID=@var  
DELETE FROM Employee WHERE Employee_ID=@var  

BizTalk アプリケーションの一部としてこのストアド プロシージャを実行すると、通知が既に受信されているレコードが削除されます。 そのため、もう 1 つの受信場所は、次のレコードの通知を受け取ります。

通知を受信するための負荷分散を構成するために実行する必要がある手順の概要を次に示します。

  1. 通知 (受信操作) とPROCESS_EMPLOYEEストアド プロシージャ (送信操作) のスキーマを作成します。

  2. オーケストレーションを追加し、通知を受信し、ストアド プロシージャを実行し、ストアド プロシージャの応答を取得するための 3 つのメッセージを追加します。

  3. 送受信図形、メッセージ図形の構築、ポートを追加してオーケストレーションを作成します。 同じサンプル コードを使用して、PROCESS_EMPLOYEE ストアド プロシージャを呼び出すメッセージを作成できます。 BizTalk Server 管理コンソールで操作を実行するときは、場所 C:\TestLocation\MessageIn にPROCESS_EMPLOYEE ストアド プロシージャの要求メッセージが必要です。 これは、 BizTalk Server を使用して SQL からのクエリ通知の増分受信 で作成されたオーケストレーションの一部として呼び出すコード スニペットによって、C:\TestLocation\MessageIn に存在する要求 XML に基づいて要求メッセージが作成されるためです。

  4. アプリケーションをビルドしてデプロイします。 負荷分散を示すには、このオーケストレーションを、BizTalk Server と SQL アダプターがインストールされている 2 台以上の異なるコンピューターに展開する必要があります。

  5. 両方のコンピューターの BizTalk Server 管理コンソールで、WCF-Custom または WCF-SQL の受信場所に対して次のバインド プロパティを指定します。

    バインディングプロパティ 価値
    InboundOperationType これを [通知] に設定します。
    NotificationStatement 次の設定を行います。

    SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0

    手記: 通知ステートメントの場合は、テーブル名とスキーマ名を常に指定する必要があります。 たとえば、dbo.Employee のようにします。
    NotifyOnListenerStart これを True に設定 します
  6. BizTalk アプリケーションを起動します。

  7. 通知の受信を開始するには、EMPLOYEE テーブルに 100 個のレコードを挿入します。 その際、PROCESS_EMPLOYEE ストアド プロシージャを呼び出すための要求 XML が C:\TestLocation\MessageIn で使用できることを確認します。

  8. BizTalk アプリケーションが通知メッセージを削除する場所 (両方のコンピューター上) を監視します。 挿入された 100 個のレコードのうち、1 つの場所が一部のレコードの通知を受け取り、もう一方の場所は残りのレコードの通知を受け取ります。 両方の場所が 100 件すべてのレコードの通知を受け取ります。

こちらもご覧ください

BizTalk Server を使用して SQL クエリ通知を受信する