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 Sie mehrere Empfangsspeicherorte als Teil verschiedener BizTalk-Anwendungen erstellt haben, die für den Empfang von Abfragebenachrichtigungen für dieselbe Tabelle (z. B. ACCOUNTACTIVITY) in derselben Datenbank konfiguriert sind. Wenn in derselben Tabelle hundert Datensätze eingefügt werden, erhalten alle Empfangsspeicherorte die Benachrichtigung. Um Benachrichtigungen an mehreren Empfangsstandorten effektiv zu empfangen, können Sie Vorgänge aus Ihrer BizTalk-Anwendung so aufrufen, dass bei Empfang einer Benachrichtigung von einem Empfangsstandort der andere Empfangsort nicht dieselbe Benachrichtigung erhält. Sie können also Benachrichtigungen, die an mehreren Standorten empfangen werden, effektiv verteilen.
Die zum Einrichten einer Orchestrierung für den Lastenausgleich beim empfangen von Benachrichtigungen erforderlichen Aufgaben sind dieselben wie für das Empfangen inkrementeller Oracle-Datenbankänderungsbenachrichtigungen mithilfe von BizTalk Server. In diesem Thema wird der einzige Unterschied zwischen den beiden Ansätzen aufgeführt.
Load-Balancing Abfragebenachrichtigungen an mehreren Empfangsorten
Wie im Thema Empfangen von Oracle Database Change Notifications inkrementell mithilfe von 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 eine Benachrichtigung erfolgt ist. 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 hinzu: eine für den Empfang von Benachrichtigungen, eine für die Ausführung der Prozedur und eine für den Empfang einer Antwort auf die Prozedur.
Erstellen Sie eine Orchestrierung, indem Sie Sende- und Empfangs-Shapes, das "Nachricht erstellen"-Shape und die Ports hinzufügen. Sie können denselben Beispielcode zum Erstellen einer Nachricht verwenden, um die NOTIFY_LOAD_BALANCE gespeicherten Prozedur aufzurufen. Beachten Sie, dass beim Ausführen des Vorgangs in der BizTalk Server-Verwaltungskonsole die Anforderungsmeldung für die NOTIFY_LOAD_BALANCE Prozedur am Speicherort C:\TestLocation\MessageIn vorhanden sein muss. Dies tun Sie, weil der Codeausschnitt, den Sie als Teil der Orchestrierung aufrufen, die in Empfangen von Oracle-Datenbankänderungsbenachrichtigungen inkrementell unter Verwendung von BizTalk Server erstellt wurde, eine Anforderungsnachricht basierend auf der anforderungsbezogenen XML-Datei erstellt, die in C:\TestLocation\MessageIn vorhanden ist.
Erstellen sie die Anwendung, und stellen Sie sie bereit. 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 die folgenden Bindungseigenschaften für den Empfangsort WCF-Custom oder WCF-OracleDB auf beiden Computern an:
Binding-Eigenschaft Wert InboundOperationType Legen Sie dies auf "Benachrichtigung" fest. NotificationPort Gibt die Portnummer an, die ODP.NET öffnen muss, um auf Benachrichtigungen über Datenbankänderungen von Oracle zu lauschen. Legen Sie dies auf dieselbe Portnummer fest, die Sie der Liste der Ausnahmen für die Windows-Firewall hinzugefügt haben müssen. Anweisungen zum Hinzufügen von Ports zur Windows-Firewall-Ausnahmenliste finden Sie unter https://go.microsoft.com/fwlink/?LinkID=196959. Wichtig: Wenn Sie dies auf den Standardwert von -1 festlegen, müssen Sie die Windows-Firewall vollständig deaktivieren, um Benachrichtigungen zu empfangen. NotificationStatement Legen Sie folgendes fest:
SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’Anmerkung: Sie müssen den Tabellennamen zusammen mit dem Schemanamen angeben. Beispiel:SCOTT.ACCOUNTACTIVITY.NotifyOnListenerStart Legen Sie diesen Wert auf "True" fest. Starten Sie die BizTalk-Anwendung.
Wenn Sie mit dem Empfangen von Benachrichtigungen beginnen möchten, fügen Sie in die TABELLE ACCOUNTACTIVITY ein hundert Datensätze ein. 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 ablegt. Sie werden feststellen, dass von den hundert eingefügten Datensätzen eine Position Benachrichtigungen für einige Datensätze erhält, während der andere Speicherort Benachrichtigungen für die verbleibenden Datensätze erhält. Zusammen erhalten beide Speicherorte eine Benachrichtigung für alle hundert Datensätze.
Siehe auch
Empfangen von Oracle-Datenbankänderungsbenachrichtigungen inkrementell mithilfe von BizTalk Server