次の方法で共有


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

同じデータベース内の同じテーブル (Employee など) のクエリ通知を受信するように構成された、異なる 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 受信場所に次のバインド プロパティを指定します。

    Binding プロパティ
    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 つの場所が一部のレコードの通知を受け取り、もう 1 つの場所が残りのレコードの通知を受け取ることがわかります。 両方の場所がまとめて、100 件のレコードすべてに対する通知を受け取ります。

参照

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