Verwenden Sie das Muster 'Message Splitter' (Nachrichtenverteiler) für die Aufteilung einer großen XML-Nachricht in kleinere Elemente zur Verarbeitung durch ein oder mehrere Ziele.
Sie möchten Informationen, die in einer Anwendung in einer gewissen Zeit aufgelaufen sind, mit anderen Anwendungen gemeinsam nutzen. Typische Beispiele sind Umsatzdaten, die innerhalb eines Tages aufgelaufen sind, oder Informationsaktualisierungen, die von Partnern empfangen werden. Die Daten werden innerhalb eines bestimmten Zeitraums gesammelt und in einer einzigen großen Nachricht übertragen. Für die Tagesendverarbeitung der Zielanwendung oder der Zielanwendungen ist es erforderlich, dass jedes Element einzeln verarbeitet wird.
Eine Anwendung kann auch eine Nachricht generieren, die eine Reihe von Datensätzen enthält, die verteilt werden müssen, z. B. wenn eine Anwendung Referenzdaten verwaltet und verteilt.
Umfangreiche Nachrichten, die sich wiederholende und verarbeitende Strukturen enthalten, können einen übermäßigem Speicherbedarf verursachen, was möglicherweise Auswirkungen auf andere Nachrichtenprozesse hat und zu einem Brokerausfall führen kann. Dieses Muster sorgt dafür, dass die Elemente einer großen Nachricht gemäß definierter Routing-Regeln an verschiedene Ziele weitergeleitet werden.
Verwenden Sie dieses Muster für Anwendungen, die Informationen zu einer Reihe von Geschäftstransaktionen speichern und diese Informationen an eine oder mehrere Zielanwendungen in Batches übergeben. Es kann für die Verarbeitung großer Nachrichten ohne übermäßigen Speicherbedarf verwendet werden.
Dieses Muster kann verwendet werden, wenn die Quellenanwendung oder die Zielanwendungen echtzeitnahe Serviceaufrufe nicht ausführen oder verarbeiten können oder wenn die Verarbeitung von Informationen im Stapelbetrieb aus geschäftlichen Gründen erforderlich ist.
Die Lösung besteht in der Implementierung eines Nachrichtenflusses, der eine veränderliche Nachrichtenbaumstruktur verwendet, sodass wiederholt anwendbare Elemente gelöscht werden können, wenn sie verarbeitet werden. Mithilfe des partiellen Parsings können einzelne Elemente bei Bedarf syntaktisch analysiert werden und da diese Elemente nach Abschluss gelöscht werden, wird verhindert, dass die speicherinterne Baumstruktur linear mit der Anzahl der Elemente anwächst. Wenn die einzelnen Elemente extrahiert werden, werden sie an die entsprechende Zielanwendung weitergeleitet.
Die Eingabenachricht und alle Ausgabenachrichten werden in einer einzigen Transaktion verarbeitet. Alle Ausgabenachrichten sind persistent. Wenn die XML-Eingabenachricht nicht gelesen werden kann, schlägt die gesamte Transaktion fehl, aber wenn Fehler bei der Verarbeitung eines einzelnen Elements auftreten, kann das fehlgeschlagene Element zur späteren Verarbeitung zu einer Warteschlange hinzugefügt werden oder die gesamte Transaktion schlägt fehl.