In diesem Abschnitt werden die wichtigsten Merkmale der Nachrichtenflüsse und Nachrichtengruppe erläutert, die im Mustercode 'Web Service Aggregation' verwendet werden.
Ein Aggregationsverteilernachrichtenfluss besitzt einen oder mehrere Sendeknoten, die einem AggregateRequest-Knoten vorgelagert sind. Nachdem alle zu verteilenden Nachrichten einen Sendeknoten und einen AggregateRequest-Knoten durchlaufen haben, wird die Arbeitseinheit vom Nachrichtenfluss festgeschrieben. Wenn der Sendeknoten transaktionsorientiert ist, werden die Nachrichten zum Zeitpunkt der Festschreibung gesendet. Wenn die Knoten nicht transaktionsorientiert sind (falls sie beispielsweise Hypertext Transfer Protocol (HTTP) verwenden), werden die Nachrichten gesendet, sobald der Knoten beendet wird. Dieses Verhalten kann die Aggregation beeinflussen, denn wenn der Ziel-Web-Service schnell ausgeführt wird, kann die Antwort eingehen, bevor die Festschreibung der Aggregation erfolgt ist. Die Antwort wird dann in der Aggregatantwort als unbekannte Nachricht behandelt und nach einem bestimmten Zeitlimit verarbeitet. Um dieses Problem zu vermeiden, sollte in Aggregationsnachrichtenflüssen ein transaktionsorientierter Sendeknoten für die Verteilung verwendet werden. MQOutput-Knoten unterstützen die Transaktionalität.
Ein wichtiger Verarbeitungsaspekt im Mustercode 'Web Service Aggregation' besteht darin, dass die Antwort-ID der gesamten SOAP-Anforderung auf jeden Fall gespeichert wird. Es wird für jeden Nachrichtenfluss erläutert, wie dieses Verhalten erreicht wird.
Der Mustercode 'Web Service Aggregation' enthält sechs Nachrichtenflüsse. Fünf Nachrichtenflüsse werden für die Aggregation der Web-Services verwendet. Diese Nachrichtenflüsse werden in der Reihenfolge ausgeführt, in der sie in der folgenden Tabelle angegeben sind (für weitere Informationen auf den jeweiligen Nachrichtenfluss klicken). Der sechste Nachrichtenfluss verarbeitet Nachrichtenflussüberwachungsdaten.
Sequence | Name des Nachrichtenflusses | Beschreibung |
---|---|---|
1 | WSAggregationFanOut.msgflow | Ruft mehrere SOAP-Anforderungen der Web-Services durch WebSphere MQ auf (Verteilung) |
2 | WSAggregationMQtoSOAP.msgflow | Konvertiert die WebSphere MQ-SOAP-Nachrichten in HTTP |
3 | WSAggregationTargetWS.msgflow | Führt die Web-Services aus und erstellt Antworten |
4 | WSAggregationSOAPtoMQ.msgflow | Konvertiert die HTTP-Antworten in WebSphere MQ |
5 | WSAggregationFanIn.msgflow | Empfängt die Antworten von den Web-Services und erstellt eine konsolidierte SOAP-Antwort (Zusammenfassung) |
WSAggregationReadMonitordata.msgflow | Verarbeitet die Nachrichten, die durch die Nachrichtenflussüberwachung erstellt werden |
Im Nachrichtenfluss 'WSAggregationFanOut.msgflow' sind den AggregateRequest-Knoten MQOutput-Knoten vorgeschaltet. Durch die Verwendung von WebSphere MQ-Knoten erfolgt die Verteilung transaktionsorientiert. Wenn Sie die Transaktionalität in den MQOutput-Knoten festlegen möchten, setzen Sie die Option Transaktionsmodus auf Ja.
Der Nachrichtenfluss besitzt zwei AggregateRequest-Knoten, jeder mit einem zugehörigen, vorgelagerten MQOutput-Knoten. Sie können bei Bedarf weitere Knotenpaare hinzufügen.
Bei der Ausführung des Nachrichtenflusses 'WSAggregationFanOut.msgflow' kann in jede Warteschlange mindestens eine Nachricht eingereiht werden. Die Anzahl der Nachrichten, die in eine Warteschlange gestellt werden, wird durch den Wert eines Feldes in der Eingabenachricht bestimmt.
Der Nachrichtenfluss speichert die ursprüngliche SOAP-Antwort-ID im Feld MQMD.CorrelId jeder Ausgabenachricht.
Jede WebSphere MQ-Nachricht verfügt über ein eindeutiges Feld des Typs MQMD.MsgId, das für die Aggregation erforderlich ist.
Der Nachrichtenfluss ' WSAggregationMQtoSOAP.msgflow' verfügt über zwei ähnliche Bereiche. Die beiden MQInput-Knoten bedienen die beiden WebSphere MQ-Warteschlangen, in die der Nachrichtenfluss WSAggregationFanOut.msgflow Nachrichten schreibt.
Der Web-Service, der von jedem Teil aufgerufen wird, ist derselbe. Sie können dieses Verhalten ändern, damit Sie bei Bedarf separate Web-Services aufrufen können. Im Abschnitt Mustercode erweitern finden Sie Anweisungen zur Änderung des Verhaltens.
Der Nachrichtenfluss 'WSAggregationMQtoSOAP.msgflow' speichert die ursprüngliche SOAP-Antwort-ID im Feld UserContext der lokalen SOAP-Umgebung.
Der Nachrichtenfluss erstellt für den auszuführenden Web-Service eine neue SOAP-Antwort-ID auf Basis von MQMD.MsgId.
Der Nachrichtenfluss 'WSAggregationTargetWS.msgflow' erstellt eine Web-Service-Antwortnachricht. Er kann geklont werden, um unterschiedliche Web-Services darzustellen, z. B. wenn jeder Teil von WSAggregationMQtoSOAP.msgflow einen anderen Web-Service aufruft.
Der Web-Service zählt, wie häufig er aufgerufen wurde. Dieser Zahlenwert wird im Feld <orderAmt> der Antwortnachricht zurückgegeben. Wenn <partNo> dem Wert ABC1234 entspricht, wird das Feld <orderStatus> auf confirmed gesetzt. Andernfalls wird es auf rejected gesetzt.
Der Nachrichtenfluss 'WSAggregationSOAPtoMQ.msgflow' speichert die ursprüngliche SOAP-Antwort-ID (aus dem SOAP-UserContext in der lokalen Umgebung) im Feld MQMD.MsgId der Ausgabenachricht.
Der Nachrichtenfluss speichert die SOAP-Antwort-ID des Web-Service, der zuvor aufgerufen wurde, in Properties.ReplyIdentifier. Wenn die WebSphere MQ-Nachricht erzeugt wird, enthält sie diesen Wert im Feld MQMD.CorrelId.
Der Nachrichtenfluss setzt MQMD.MsgType auf MQMT_REPLY.
Der Nachrichtenfluss 'WSAggregationFanIn.msgflow' stellt die ursprüngliche SOAP-Antwort-ID aus der zusammengefassten Antwortnachricht wieder her.
Das Feld <AMT> der aggregierten Antwortnachricht enthält den Wert des Feldes <orderAmt> des Web-Service, der zuletzt aufgerufen wurden.
Der Nachrichtenfluss 'WSAggregationReadMonitordata.msgflow' verwendet als Eingabe die Publish/Subscribe-Nachrichten, die von der Flussüberwachung, die für diese Daten relevant ist, ausgegeben werden.
Im Nachrichtenfluss 'WSAggregationReadMonitordata.msgflow' erstellt der Collector-Knoten separate Datensammlungen für jeden Geschäftsdatenausschnitt. Da im Vorfeld nicht bekannt ist, wie viele Überwachungsereignisnachrichten für die einzelnen Geschäftsdatenausschnitte erstellt werden, wird der Collector-Knoten an seinem Empfangsterminal nach zehn Sekunden aufgrund einer Zeitlimitüberschreitung beendet. Es ist ein (nominales) Maximum von 100 Ereignissen festgelegt. Wenn mehr als 100 Ereignisse erfasst werden, werden mehrere Datensammlungen angelegt. Sobald die Datensammlung abgeschlossen ist oder das Zeitlimit von zehn Sekunden überschritten wurde, wird in die Datei Businessdata.xml eine Zusammenfassung der Überwachungsereignisse geschrieben.
Der FileOutput-Knoten legt fest, dass im Falle eines doppelten Dateinamens eine Zeitmarke zur Ausgabedatei hinzugefügt, die Datei archiviert und die vorhandene Datei ersetzt wird. Dieses Verhalten stellt sicher, dass keine Überwachungsdaten verloren gehen, wenn mehrere Datensammlungen mit denselben Geschäftsdaten erfasst werden.
Die Nachrichtengruppe WSAggregationMessages enthält Definitionen, die von zwei Gruppen von WSDL-Definitionen abgeleitet werden:
Die Nachrichtengruppe enthält außerdem Nachrichtendefinitionen, die von der Nachrichtenflussüberwachung verwendet werden. Die Definitionen werden aus einem XML-Schema generiert, das von WebSphere Message Broker bereitgestellt wird.
Zurück zu 'Informationen zum Mustercode 'Web Service Aggregation''