Aggregator (BizTalk Server-Beispiel)
Dieses Beispiel zeigt, wie Nachrichtenaggregationsfunktionen mithilfe von Orchestrierung und Pipelines erstellt werden. Sie werden eine Orchestrierung erstellen, die insbesondere die folgenden Aufgaben übernimmt:
Empfangen einer Sammlung von korrelierten Nachrichten. Nachrichten werden basierend auf den Zielpartner-URI-Informationen korreliert, die aus dem Nachrichteninhalt extrahiert werden.
Aggregieren empfangender Nachrichten in einen Austauschbatch durch Ausführen einer XML-Sendepipeline.
Erstellen einer XML-Austauschnachricht pro Minute oder sobald genügend Nachrichten für die Aggregation vorhanden sind.
Speicherort dieses Beispiels
<Beispielpfad>\Pipelines\Aggregator
In der folgenden Tabelle werden die Dateien für dieses Beispiel aufgelistet.
Datei(en) | BESCHREIBUNG |
---|---|
Aggregator.sln | Visual Studio-Projektdatei für das Beispiel. |
AggretatorBinding.xml | Bindungsdatei für das Beispiel. |
Cleanup.bat | Wird zum Aufheben der Bereitstellung von Assemblys und zum Entfernen aus dem globalen Assemblycache (GAC) verwendet. Entfernt Sende- und Empfangsports. Entfernt nach Bedarf virtuelle Verzeichnisse von Microsoft Internetinformationsdienste (IIS). |
Setup.bat | Dient zum Erstellen und Initialisieren dieses Beispiels. |
Im Ordner Aggregate: Aggregate.btproj |
BizTalk-Projekt für die Aggregationsorchestrierung. |
Im Ordner Aggregator: Aggregate.odx |
Orchestrierung, die korrelierte Nachrichten erfasst und diese dann mithilfe einer Sendepipeline in einem Austausch zusammenfasst. |
Im Ordner Aggregate: SuspendMessage.odx |
Orchestrierung, die zum Anhalten von Nachrichten verendet wird, die nicht in der Aggregationsorchestrierung verarbeitet werden können. |
Im Ordner PipelinesAndSchemas: FFReceivePipeline.btp |
Empfangspipeline mit einem Flatfile-Disassembler. |
Im Ordner PipelinesAndSchemas: Instance1.txt, Instance2.txt, Instance3.txt, Instance4.txt |
Dokumentinstanzen für das Beispiel. Instance1.txt und Instance2.txt sollten einem Austausch für Zielpartner http://www.contoso.com hinzugefügt werden, während Instance3.txt und Instance4.txt einem Austausch für Zielpartner http://www.northwind.com hinzugefügt werden sollten. |
Im Ordner PipelinesAndSchemas: Invoice.xsd, InvoiceEnvelope.xsd |
Dokumentschema und Umschlagschema für den Ausgabeaustausch. |
Im Ordner PipelinesAndSchemas: PipelinesAndSchemas.btproj |
BizTalk-Projekt für die Schemas und Pipelines. |
Im Ordner PipelinesAndSchemas: PropertySchema.xsd |
Eigenschaftenschema für das Beispiel. |
Im Ordner PipelinesAndSchemas: XMLAggregatingPipeline.btp |
Sendepipeline, die von der Orchestrierung zum Zusammenstellen erfasster Nachrichten in einem XML-Austausch verwendet wird. |
Erstellen und Initialisieren des Beispiels
Mithilfe des folgenden Verfahrens können Sie das Beispiel Aggregator erstellen und initialisieren.
So erstellen und initialisieren Sie das Aggregator-Beispiel
Navigieren Sie in einem Befehlsfenster zum folgenden Ordner:
<Beispielpfad>\Pipelines\Aggregator
Führen Sie die Datei "Setup.bat" aus, von der folgende Aktionen ausgeführt werden:
Erstellen der Eingabeordner (In) und der Ausgabeordner (Out) für dieses Beispiel im folgenden Ordner:
<Beispielpfad>\Pipelines\Aggregator
Kompilieren der Visual Studio-Projekte für dieses Beispiel.
Erstellen einer neuen Anwendung namens „Aggregator Sample“ und Bereitstellen der Beispielassemblys in dieser Anwendung.
Erstellen und Binden des BizTalk Server-Empfangsspeicherorts sowie der Sende- und Empfangsports.
Eintragen und Starten der Orchestrierung, Aktivieren des Empfangsspeicherorts und Starten des Sendeports.
Wenn Sie die Projekte in diesem Beispiel öffnen und erstellen möchten, ohne die Datei Setup.bat auszuführen, müssen Sie zunächst ein Schlüsselpaar mit starkem Namen mit dem entsprechenden .NET Framework-Hilfsprogramm für starke Namen (sn.exe) erstellen. Verwenden Sie dieses Schlüsselpaar zum Signieren der sich ergebenden Assemblys.
Bevor Sie versuchen, dieses Beispiel ausführen, sollten Sie sicherstellen, dass BizTalk Server während des Erstellungs- und Initialisierungsvorgangs keine Fehler gemeldet hat.
Wenn Sie von "Setup.bat" vorgenommene Änderungen rückgängig machen möchten, führen Sie "Cleanup.bat" aus. "Cleanup.bat" müssen Sie ausführen, bevor "Setup.bat" ein zweites Mal ausgeführt wird.
Ausführen des Beispiels
Verwenden Sie das folgende Verfahren, um das Beispiel „Aggregator“ auszuführen.
So führen Sie das Beispiel „Aggregator“ aus
Öffnen Sie die Dateien Instance1.txt und Instance2.txt aus dem Ordner PipelinesAndSchemas, um ihren Inhalt zu untersuchen.
Beachten Sie, dass in beiden Dateien das DestinationPartnerURI-Element den Wert
http://www.contoso.com
enthält. Dieser Wert wird verwendet, um diese beiden Nachrichten miteinander zu korrelieren, sodass sie einem Austausch hinzugefügt werden können.Ähnlich Instance3.txt und Instance4.txt Dateien ist das DestinationPatnerURI-Element auf
http://www.northwind.com
festgelegt.Diese beiden Nachrichten werden zusammen einem anderen Austausch hinzugefügt.
Fügen Sie Kopien der Dateien Instance1.txt, Instance2.txt, Instance3.txt und Instance4.txt in den Ordner In ein.
Aggregationsorchestrierungen generieren Ausgabeaustauschvorgänge, sobald 10 Nachrichten erfasst wurden oder ein Timeout von einer Minute aufgetreten ist. Aus diesem Grund werden die Dateien im Ordner Out ggf. mit einer Verzögerung angezeigt.
Damit der Timeout vermieden wird, können Sie die vier Eingabedateien vier weitere Male kopieren. Auf diese Weise wird die Generierung der Austauschvorgänge durch die Aggregationsorchestrierungen ausgelöst.
Sehen Sie sich die XML-Dateien an, die im Ordner Out erstellt wurden. Es sollten zwei Dateien vorhanden sein – eine pro Zielpartner-URI.
Öffnen Sie eine der Dateien, um ihren Inhalt zu untersuchen. Die Datei sollte einen XML-Austausch enthalten, der aus einem Umschlag und zwei darin enthaltenen XML-Dokumenten besteht.
Hinweis
Die Beispielimplementierung verursacht möglicherweise unter hoher Last in einem Konvoiszenario Nachrichten des Typs Übermittelt, nicht verarbeitet oder Mit gesperrten Nachrichten abgeschlossen. Dieser Vorgang tritt immer auf, wenn eine Nachricht an einen Geschäftsprozess weitergeleitet wird, der aktuell beendet wird, oder wenn unerwartete Nachrichten in einem Geschäftsprozess eingehen.