Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Betrachten Sie ein Szenario, in dem mehrere Empfangsspeicherorte als Teil verschiedener BizTalk-Anwendungen erstellt wurden, die zum Empfangen von Abfragebenachrichtigungen für dieselbe Tabelle (z. B. ACCOUNTACTIVITY) in derselben Datenbank konfiguriert sind. Wenn hundert Datensätze in dieselbe Tabelle eingefügt werden, erhalten alle Empfangsspeicherorte die Benachrichtigungsmeldung. Um effektiv Benachrichtigungen an mehreren Empfangsstandorten zu empfangen, können Sie Vorgänge aus Ihrer BizTalk-Anwendung so aufrufen, dass der andere Empfangsspeicherort nicht dieselbe Benachrichtigung erhält, wenn eine Benachrichtigung von einem Empfangsstandort empfangen wird. So können Sie Benachrichtigungen, die an mehreren Standorten empfangen werden, effektiv lastenausgleichen.
Die Zum Einrichten einer Orchestrierung zum Lastenausgleich empfangener Benachrichtigungen erforderlichen Aufgaben sind identisch mit denen für inkrementelles Empfangen von Änderungsbenachrichtigungen für Oracle-Datenbank mithilfe BizTalk Server. In diesem Thema wird nur der Unterschied zwischen den beiden Ansätzen aufgeführt.
Load-Balancing Abfragebenachrichtigungen an mehreren Empfangsstandorten
Wie im Thema Inkrementelles Empfangen von Oracle-Datenbankänderungsbenachrichtigungen mithilfe BizTalk Server haben Sie inkrementelle Benachrichtigungen konfiguriert, indem Sie eine PROCESS_RECORDS-Prozedur ausführen. Zum Konfigurieren des Lastenausgleichs können Sie eine gespeicherte Prozedur ausführen, die die Datensätze löscht, für die benachrichtigt wurden. Betrachten Sie beispielsweise eine gespeicherte Prozedur NOTIFY_LOAD_BALANCE mit der folgenden Definition:
PROCEDURE NOTIFY_LOAD_BALANCE (TABLE_DATA OUT SYS_REFCURSOR) IS
var int;
BEGIN
SELECT TID INTO var FROM ACCOUNTACTIVITY WHERE ROWNUM = 1 FOR UPDATE;
OPEN TABLE_DATA FOR SELECT * FROM ACCOUNTACTIVITY WHERE TID = var;
DELETE FROM ACCOUNTACTIVITY WHERE TID = var;
END NOTIFY_LOAD_BALANCE;
Wenn Sie diese gespeicherte Prozedur als Teil der BizTalk-Anwendung ausführen, wird der Datensatz, für den bereits eine Benachrichtigung empfangen wurde, gelöscht. Der andere Empfangsspeicherort erhält also eine Benachrichtigung für den nächsten Datensatz.
Hier sind die allgemeinen Schritte, die Sie ausführen müssen, um den Lastenausgleich für den Empfang von Benachrichtigungen zu konfigurieren.
Erstellen Sie ein Schema für Benachrichtigung (eingehender Vorgang) und NOTIFY_LOAD_BALANCE Prozedur (ausgehender Vorgang).
Fügen Sie eine Orchestrierung hinzu, und fügen Sie drei Nachrichten zum Empfangen einer Benachrichtigung, zum Ausführen der Prozedur und zum Abrufen der Antwort für die Prozedur hinzu.
Erstellen Sie eine Orchestrierung, indem Sie Senden- und Empfangen-Shapes hinzufügen, Nachrichtenform erstellen und Ports hinzufügen. Sie können den gleichen Beispielcode zum Erstellen einer Nachricht verwenden, um die NOTIFY_LOAD_BALANCE gespeicherten Prozedur aufzurufen. Beachten Sie, dass Sie beim Ausführen des Vorgangs in BizTalk Server Verwaltungskonsole die Anforderungsnachricht für die NOTIFY_LOAD_BALANCE-Prozedur am Speicherort C:\TestLocation\MessageIn haben müssen. Dies geschieht, weil der Codeausschnitt, den Sie im Rahmen der Orchestrierung aufrufen, die unter Empfangen von Oracle-Datenbankänderungsbenachrichtigungen inkrementell mithilfe BizTalk Server eine Anforderungsnachricht basierend auf dem Anforderungs-XML erstellt, das in C:\TestLocation\MessageIn vorhanden ist.
Erstellen und Bereitstellen der Anwendung. Um den Lastenausgleich zu veranschaulichen, müssen Sie diese Orchestrierung mindestens auf zwei verschiedenen Computern bereitstellen, auf denen BizTalk Server- und Oracle Database-Adapter installiert sind.
Geben Sie in der BizTalk Server-Verwaltungskonsole auf beiden Computern die folgenden Bindungseigenschaften für den WCF-Custom- oder WCF-OracleDB Empfangsspeicherort an:
Bindungseigenschaft Wert InboundOperationType Legen Sie dies auf Benachrichtigung fest. NotificationPort Gibt die Portnummer an, die ODP.NET öffnen muss, um auf Datenbankänderungsbenachrichtigungen aus der Oracle-Datenbank zu lauschen. Legen Sie dies auf die gleiche Portnummer fest, die Sie der Liste der Windows-Firewallausnahmen hinzugefügt haben müssen. Anweisungen zum Hinzufügen von Ports zur Liste der Windows-Firewallausnahmen finden Sie unter https://go.microsoft.com/fwlink/?LinkID=196959. Wichtig: Wenn Sie dies auf den Standardwert -1 festlegen, müssen Sie die Windows-Firewall vollständig deaktivieren, um Benachrichtigungen zu empfangen. NotificationStatement Legen Sie dies auf fest:
SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
Hinweis: Sie müssen den Tabellennamen zusammen mit dem Schemanamen angeben. Beispiel:SCOTT.ACCOUNTACTIVITY
.NotifyOnListenerStart Legen Sie dies auf True fest. Starten Sie die BizTalk-Anwendung.
Fügen Sie hundert Datensätze in die Tabelle ACCOUNTACTIVITY ein, um Benachrichtigungen zu erhalten. Stellen Sie dabei sicher, dass die Anforderungs-XML zum Aufrufen der NOTIFY_LOAD_BALANCE-Prozedur in C:\TestLocation\MessageIn verfügbar ist.
Überwachen Sie den Speicherort (auf beiden Computern), an dem die BizTalk-Anwendung die Benachrichtigungsnachrichten ablöscht. Sie werden feststellen, dass von den hundert eingefügten Datensätzen ein Speicherort Benachrichtigungen für einige Datensätze erhält, während der andere Speicherort eine Benachrichtigung für die restlichen Datensätze erhält. Zusammen erhalten beide Standorte eine Benachrichtigung für alle hundert Datensätze.
Weitere Informationen
Inkrementelles Empfangen von Oracle Database-Änderungsbenachrichtigungen mithilfe von BizTalk Server