Informationen zum Mustercode 'Asynchroner Verbraucher'

Der Mustercode 'Asynchronous Consumer' zeigt, wie Sie einen Web-Service mithilfe asynchroner Knoten aufrufen können. Der Web-Service 'Web Services Definition Language (WSDL)' wird in die Tools importiert und zur Konfiguration des SOAPAsyncRequest-Knotens verwendet, um Web-Service-Operationen aufzurufen. Dieser Mustercode veranschaulicht zudem, wie bestehende WebSphere MQ-Schnittstellen so erweitert werden können, dass Web-Service-Anforderungen gestellt werden können.

Der Mustercode verwendet zunächst einen HTTP-Transport, kann aber so geändert werden, dass er JMS verwendet (siehe Abschnitt Mustercode 'Asynchronous Consumer' für Verwendung eines JMS-Transports konfigurieren).

Bei dem Web-Service im Mustercode handelt es sich um einen vereinfachten Bestellservice mit nur einem Vorgang. Der Web-Service wird im Mustercode als Nachrichtenfluss bereitgestellt. Der Web-Service gibt immer eine Antwort zurück, die anzeigt, ob das bestellte Teil verfügbar ist. Optional kann zur Erweiterung des Web-Services ein Datenbankknoten zur Abfrage einer Bestandsdatenbank verwendet werden.

Im Mustercode 'Asynchroner Verbraucher' werden folgende Aufgaben veranschaulicht:

Nachrichtenflüsse

Das folgende Diagramm zeigt den Web-Client-Nachrichtenfluss:

Screenshot des Web-Client-Nachrichtenflusses

Knotentyp Knotenname
MQInput MQWSInput
MQOutput MQWSOutput
Rechnen Compute Request (Rechenanforderung), Format Response (Formatantwort)
SOAPAsyncRequest-Knoten SOAP Asynchronous Request (Asynchrone SOAP-Anforderung)
SOAPAsyncResponse-Knoten SOAP Asynchronous Response (Asynchrone SOAP-Antwort)

Eine Web-Service-Anforderung wird mithilfe des Knotens 'Compute Request' in der SOAP-Domäne aus einer WebSphere MQ-Nachricht erstellt. Die Web-Service-Operation wird über den Knoten 'SOAP Asynchronous Request' aufgerufen und der paarige Knoten 'SOAP Asynchronous Response' empfängt die Antwort. Abschließend formatiert der Knoten 'Format Response' die Antwort als WebSphere MQ-Nachricht.

Das folgende Diagramm zeigt den Web-Service-Nachrichtenfluss:

Screenshot des Web-Service-Nachrichtenflusses

Knotentyp Knotenname
SOAPInput SOAP Input
Knoten zur Weiterleitung an Zieladressen Route WS Operation (WS-Operation weiterleiten)
Label submitPO (PO senden)
Rechnen Compute Response
SOAPReply SOAP Reply-Knoten

Eine eingehende SOAP-Nachricht wird unter Verwendung des 'Route WS Operation'-Knotens an den 'submitPO'-Knoten weitergeleitet. In diesem Beispiel wird nur eine Operation vom Web-Service des Mustercodes angeboten. Mithilfe mehrerer Label-Knoten können Sie verschiedene Operationen bearbeiten, wenn Ihr Web-Service mehrere Operationen anbietet. Die SOAP-Antwort wird im Knoten 'Compute Response' generiert, bevor sie an den Web-Client zurückgesendet wird.

Nachrichten

Der Web-Client-Nachrichtenfluss wird von einer WebSphere MQ-Nachricht gesteuert. Zum Ausführen des Mustercodes steht eine Testclientdatei zur Verfügung, die das im folgenden Screenshot gezeigte Nachrichtenformat verwendet:

Screenshot des OrderMessage-Nachrichtenformats.

Das gültige Format für eine Web-Service-Anforderungsnachricht und eine Antwortnachricht wird im folgenden bearbeiteten Schemaauszug gezeigt:

<xsd:element name="submitPORequest">
...     <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="partNo" type="xsd:string"/>
            <xsd:element name="partQuantity" type="xsd:int"/>
            <xsd:element name="personName">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="firstName" type="xsd:string"/>
                  <xsd:element name="lastName" type="xsd:string"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
            <xsd:element name="address">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="street" type="xsd:string"/>
                  <xsd:element name="city" type="xsd:string"/>
                  <xsd:element name="zipCode" type="xsd:string"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
</xsd:element>
<xsd:element name="submitPOResponse">
...     <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="orderStatus" type="xsd:string"/>
            <xsd:element name="orderAmt" type="xsd:int"/>
            <xsd:element name="partNo" type="xsd:string"/>
            <xsd:element name="partQuantity" type="xsd:int"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

Nachdem Sie den Mustercode ausgeführt haben, können Sie ihn bei Bedarf erweitern, um eine nicht gültige Anforderungsnachricht zu senden. Um eine ungültige Anforderungsnachricht zu senden, müssen Sie den Knoten 'Compute Request' so bearbeiten, dass dem SOAP-Nachrichtenhauptteil fehlerhafte Elemente hinzugefügt werden. Es muss eine Verbindung zum Fehlerterminal im SOAPAsyncRequest-Knoten bestehen, da der Web-Service eine SOAP-Fehlernachricht generiert. Details zu SOAP-Fehlern finden Sie im Abschnitt SOAP-Fehler der Dokumentation zu WebSphere Message Broker.

Zurück zum Beginn des Mustercodes