Sobre a Amostra de Cliente Assíncrono

A amostra Consumidor Assíncrono mostra como é possível usar nós assíncronos para chamar um serviço da Web. O Web Services Definition Language (WSDL) do serviço da Web é importado no conjunto de ferramentas e usado para configurar o nó SOAPAsyncRequest para chamar operações expostas pelo serviço da Web. Essa amostra também demonstra como interfaces existentes do WebSphere MQ podem ser estendidas para fazer solicitações de serviço da Web.

A amostra usa inicialmente transporte HTTP, mas ela pode ser modificada para usar JMS; consulte Configurando a Amostra Consumidor Assíncrono para Usar um Transporte JMS.

Na amostra, o serviço da Web é um serviço de ordenação simplificado que expõe uma operação. O serviço da Web é fornecido como um fluxo de mensagens na amostra. O serviço da Web sempre retorna uma resposta indicando que a parte ordenada está disponível; uma opção para a extensão do serviço da Web pode ser usar um nó Database para consultar um banco de dados de estoque.

A amostra de Cliente Assíncrono demonstra as seguintes tarefas:

Os Fluxos de Mensagens

O diagrama a seguir mostra o fluxo de mensagens do cliente da Web:

Uma captura de tela do fluxo de mensagens do cliente da Web

Tipo de Nó Nome de Nó
MQInput MQWSInput
MQOutput MQWSOutput
Compute Pedido de Processamento, Formatar Resposta
SOAPAsyncRequest Pedido Assíncrono SOAP
SOAPAsyncResponse Resposta Assíncrona SOAP

Um pedido de serviço da Web é construído a partir de uma mensagem do WebSphere MQ usando o nó de Compute Request no domínio SOAP. A operação de serviço da Web é chamada usando-se o nó SOAP Asynchronous Request e o nó SOAP Asynchronous Response que é seu par recebe a resposta. Finalmente, o nó Formatar Resposta formata a resposta da mensagem do WebSphere MQ.

O diagrama a seguir mostra o fluxo de mensagens de serviço da Web:

Uma captura de tela do fluxo de mensagens do serviço da Web

Tipo de Nó Nome de Nó
SOAPInput Entrada SOAP
RouteToLabel Encaminhar Operação WS
Rótulo submitPO
Compute Resposta do Processamento
SOAPReply Resposta SOAP

Uma mensagem SOAP de entrada é enviada ao nó submitPO usando o nó Encaminhar Operação WS. Neste exemplo, apenas uma operação é exposta pelo serviço da Web de amostra. É possível usar vários nós Label para manipular as diferentes operações quando seu serviço da Web expõe mais do que uma operação. A resposta SOAP é gerada no nó Compute Response, antes de a resposta ser enviada de volta ao cliente da Web.

As Mensagens

O fluxo de mensagens do cliente da Web é conduzido por uma mensagem do WebSphere MQ. Um arquivo do Cliente de Teste é fornecido para execução da amostra, o arquivo usa o formato de mensagem mostrado na captura de tela a seguir:

Uma captura de tela do formato de mensagem OrderMessage.

O formato válido para uma mensagem de pedido e uma mensagem de resposta de serviço da Web é mostrado na extração de esquema editada a seguir:

<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>

Depois de executar a amostra, você pode querer estendê-la para enviar uma mensagem de pedido que não seja válida. Para enviar uma mensagem de pedido que não seja válida, você deve editar o nó Compute Request para incluir elementos inválidos no corpo da mensagem SOAP. O Terminal de Falha no nó SOAPAsyncRequest deve ser conectado porque uma mensagem de falha SOAP é gerada pelo serviço da Web. Para obter detalhes adicionais sobre falhas de SOAP, consulte A Falha de SOAP na documentação do WebSphere Message Broker.

Voltar para Home da Amostra