Use o nó HTTPAsyncRequest com o nó HTTPAsyncResponse para construir um par de fluxos de mensagens que interage com um serviço da web de forma assíncrona.
Este tópico contém as seguintes seções:
O nó HTTPAsyncRequest envia um pedido de serviço da Web, mas o nó não aguardo o recebimento de uma resposta do serviço da Web associado. A resposta do serviço da web é recebida pelo nó HTTPAsyncResponse, que pode estar em um fluxo de mensagens separado, mas deve estar no mesmo grupo de execução. Os nós são usados como um par e correlacionam respostas com relação às solicitações originais usando um identificador exclusivo. O nó HTTPAsyncRequest passa o soquete de solicitação para o nó HTTPAsyncResponse do servidor de backend a ser usado para a resposta. Se a latência do servidor de backend for alta, ele poderá não responder dentro do tempo limite do soquete.
Passar o soquete de HTTP para o nó HTTPAsyncResponse permite que o fluxo de mensagens recupere a próxima mensagem da fila sem aguardar pela resposta e, portanto, usa encadeamentos e armazenamento de forma mais eficiente do que um fluxo de mensagens síncrono.
O nó HTTPAsyncResponse manipula mensagens nos seguintes domínios de mensagem:
O nó HTTPAsyncResponse está contido na caixa da paleta HTTP e representado no WebSphere Message Broker Toolkit pelo seguinte ícone:
Use o nó HTTPAsyncResponse como um par com o nó HTTPAsyncRequest para fazer uma solicitação de HTTP e receber uma resposta de forma assíncrona. O nó HTTPAsyncRequest envia uma solicitação ao serviço da web. O nó HTTPAsyncResponse recebe a resposta do serviço da web e analisa a resposta para inclusão em sua árvore de saída.
Para obter informações adicionais sobre como trabalhar com HTTP, consulte Processando Mensagens HTTP.
Se a propriedade do ambiente local LocalEnvironment.Destination.HTTP.RequestIdentifier foi fornecida para o nó HTTPAsyncRequest com par, ela será passada para o ambiente local para o nó HTTPAsyncResponse.
O nó interage diretamente com um serviço externo utilizando TCP/IP; portanto, ele pode ter os seguintes tipos de erro:
Se o nó detectar esses erros, ele gerará uma exceção e a propagará pelo terminal de Falha.
A resposta é produzida como uma mensagem BLOB, já que o nó não pode determinar qual formato a resposta terá. Mensagens com um código de status de redirecionamento (3xx) também são manipuladas da mesma maneira.
O nó HTTPAsyncResponse trata os 100 códigos de status de séries como uma resposta 'contínua', descarta a resposta atual e aguarda outras respostas do servidor da Web.
Os códigos de status da série 200 são tratados com sucesso. As propriedades do nó determinam o formato da mensagem de saída que é gerada e a resposta é roteada para o terminal de Saída do nó.
Os códigos de status de série 300 são para redirecionamento. O redirecionamento não é suportado pelo nó HTTPAsyncResponse e os códigos de redirecionamento são tratados como erro.
Set OutputRoot.XMLNS.error850 = CAST(InputRoot.XMLNS.error.BLOB as CHAR CCSID 850);
Para
informações sobre HTTP, consulte Protocolo de Transporte de Hipertexto - HTTP/1.1.
Para obter mais informações
sobre códigos de retorno HTTP, consulte Códigos de Resposta HTTP.É possível especificar um intervalo de tempo limite no nó HTTPAsyncRequest, para que se a operação inteira de solicitação-resposta levar mais tempo do que a duração especificada, a solicitação seja propagada para o terminal de Falha em um dos nós com par. O intervalo do tempo limite se aplica ao intervalo que inicia com a solicitação sendo enviada pelo nó HTTPAsyncRequest e termina com a resposta sendo completamente recebida pelo nó HTTPAsyncResponse.
Para cada solicitação que o nó HTTPAsyncRequest processa, ele usa uma conexão para enviar a solicitação e passa a conexão para o nó HTTPAsyncResponse com par para a resposta. Se o intervalo de tempo limite for especificado, o soquete será fechado se o intervalo expirar. Esse fechamento assegura que um pedido obtenha apenas a resposta correta, e todos os dados de resposta a um pedido que tiver o tempo limite esgotado são descartados.
O processamento da solicitação-resposta é dividido entre o nó HTTPAsyncRequest e o nó HTTPAsyncResponse. Se ocorrer um tempo limite durante a fase de processamento da solicitação, uma exceção será propagada para o terminal de Falha do nó HTTPAsyncRequest. Da mesma forma, se ocorrer um tempo limite durante a fase de processamento da resposta, a solicitação será propagada para o terminal de Falha do nó HTTPAsyncResponse.
Na maioria dos casos, o tempo limite ocorreria ao aguardar por uma resposta do servidor e, nesse caso, o terminal de Falha do nó HTTPAsyncResponse será usado. Em alguns casos, pode ocorrer um tempo limite quando o nó da solicitação envia dados ao servidor. Nesse caso, o terminal de Falha do nó HTTPAsyncRequest é usado.
O cabeçalho HTTPResponse, que contém os cabeçalhos retornados pelo serviço da Web remoto, é o primeiro cabeçalho na mensagem (após Propriedades) propagado do nó. Essa ação é executada independentemente das opções escolhidas. Portanto, para a resposta do nó HTTPAsyncResponse ser colocada em uma fila do WebSphere MQ, manipule os cabeçalhos para que um MQMD seja o primeiro cabeçalho (após Propriedades).
SET OutputRoot = InputRoot;
SET OutputRoot.HTTPResponseHeader = NULL;
SET OutputRoot = InputRoot;
DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader;
DETACH HTTPHeaderRef;
ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;
Os terminais do nó HTTPAsyncResponse são descritos na tabela a seguir.
Terminal | Descrição |
---|---|
Falha | O terminal de saída para o qual a mensagem será roteada se for detectado um defeito durante o processamento no nó. |
Out | O terminal de saída para o qual a mensagem será roteada se representar a conclusão bem-sucedida do pedido de serviço da web e for requerido processamento adicional nesse fluxo de mensagens. |
Erro | O terminal de saída para o qual as mensagens que incluem um código de status de HTTP que não esteja no intervalo de 200 a 299, incluindo códigos de redirecionamento (3xx), é roteado. O redirecionamento não é suportado pelo nó HTTPAsyncResponse. |
Catch | O terminal de saída para o qual a mensagem será roteada se for emitida uma exceção downstream e capturada por este nó. |
As tabelas a seguir descrevem as propriedades do nó. A coluna com cabeçalho M indica se a propriedade é obrigatória (marcado com um asterisco no painel caso seja necessário digitar um valor quando nenhum padrão for definido); a coluna com cabeçalho C indica se a propriedade é configurável (você poderá alterar o valor quando incluir o fluxo de mensagens no arquivo broker para implementá-lo).
As propriedades Descrição do nó HTTPAsyncResponse são descritas na tabela a seguir.
Propriedade | M | A | O padrão | Descrição |
---|---|---|---|---|
Nome de nó | Não | Não | O tipo de nó, HTTPAsyncResponse | O nome do nó. |
Descrição curta | Não | Não | Uma breve descrição do nó. | |
Descrição Longa | Não | Não | Texto que descreve a finalidade do nó no fluxo de mensagens. |
A propriedade Básica do nó HTTPAsyncResponse é descrita na tabela a seguir.
Propriedade | M | A | O padrão | Descrição | Propriedade do Comando mqsiapplybaroverride |
---|---|---|---|---|---|
Identificador exclusivo | SIM | Não | Especifique o identificador exclusivo que vincula seu par dos nós HTTPAsyncRequest e HTTPAsyncResponse. | asyncRequestCorrelator |
As propriedades Análise de Mensagem de Resposta do nó HTTPAsyncResponse são descritas na tabela a seguir.
Propriedade | M | A | O padrão | Descrição |
---|---|---|---|---|
Domínio de mensagem | Não | Não | BLOB | O domínio usado para analisar a mensagem. Se o campo estiver em branco, o padrão será BLOB. |
Modelo de mensagem | Não | Não | Desmarcada | O nome do local do arquivo de esquema do modelo de mensagem no qual a mensagem é definida. Essa lista é preenchida com todos os arquivos de esquema de modelo de mensagem disponível para o domínio de mensagem selecionado. |
Message | Não | Não | Desmarcada | O nome ou local da raiz de mensagem em seu arquivo de esquema de modelo de mensagem. Essa lista é preenchida com todas as mensagens disponíveis definidas no modelo de mensagem que você selecionou. |
Formato físico | Não | Não | Desmarcada | O nome do formato físico da mensagem. Se estiver utilizando o analisador MRM ou IDOC, selecione da lista o formato físico da mensagem que chega. Essa lista inclui todos os formatos físicos que você definiu para o modelo de mensagem selecionado. Se você configurar a propriedade Domínio de Mensagem como DataObject, poderá configurar esta propriedade como XML ou SAP ALE IDoc. Configure esta propriedade como SAP ALE IDoc quando precisar analisar um fluxo de bits a partir de uma origem externa e gere uma árvore de mensagens. |
As propriedades Opções do Analisador do nó HTTPAsyncResponse são descritas na tabela a seguir.
Propriedade | M | A | O padrão | Descrição |
---|---|---|---|---|
Cronometragem de análise | Não | Não | On Demand | Essa propriedade controla quando uma mensagem de resposta é analisada. Os valores
válidos são On
Demand,
Imediato e
Completo. O valor padrão é On Demand, que faz com que a análise da mensagem seja atrasada. Para obter uma descrição completa desta propriedade, consulte Analisando On Demand. |
Construir árvore utilizando tipos de dados de esquema XML | Não | Não | Desmarcada | Esta propriedade controla se o analisador XMLNSC cria elementos da sintaxe na árvore de mensagens com tipos de dados obtidos do esquema XML. Você pode selecionar esta propriedades apenas se configurar a propriedade Validar na guia Validação ou Conteúdo ou Conteúdo e Valor. |
Utilizar analisador compacto XMLNSC para domínio XMLNS | Não | Não | Desmarcada | Essa propriedade controla se o Analisador Compacto XMLNSC (XMLNSC Compact Parser) é utilizado para mensagens no Domínio XMLNS (XMLNS Domain). Se você definir essa propriedade, os dados da mensagem de resposta serão exibidos em XMLNSC nos nós que estão conectados ao terminal de saída, quando o cabeçalho MQRFH2 de entrada ou o domínio das propriedades Análise de Mensagem de Resposta for XMLNS. |
Reter conteúdo misto (Retain mixed content) | Não | Não | Desmarcada | Essa propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar texto misto em uma mensagem de resposta. Se você selecionar a caixa de opções, serão criados elementos para texto misto. Se você desmarcar a caixa de opções, texto misto será ignorado e nenhum elemento será criado. |
Reter comentários (Retain comments) | Não | Não | Desmarcada | Essa propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar comentários em uma mensagem de resposta. Se você selecionar a caixa de opções, serão criados elementos para comentários. Se você desmarcar a caixa de opções, comentários serão ignorados e nenhum elemento será criado. |
Reter instruções de processamento (Retain processing instructions) | Não | Não | Desmarcada | Essa propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar instruções de processamento em uma mensagem de resposta. Se você selecionar a caixa de opções, serão criados elementos para instruções de processamento. Se você desmarcar a caixa de opções, instruções de processamento serão ignoradas e nenhum elemento será criado. |
Elementos opacos | Não | Não | Branco | Essa propriedade é utilizada para especificar uma lista de elementos na mensagem de resposta que devem ser analisados em segundo plano pelo analisador XMLNSC. A análise de ignorados será desempenhada apenas se a validação não estiver ativada (ou seja, se a propriedade Validar for configurada para Nenhum); as entradas especificadas em Elementos Ignorados serão ignoradas se a validação estiver ativada. |
As propriedades Validação do nó HTTPAsyncResponse são descritas na tabela a seguir.
Para obter uma descrição completa dessas propriedades, consulte Propriedades de Validação.
Propriedade | M | A | O padrão | Descrição | Propriedade do Comando mqsiapplybaroverride |
---|---|---|---|---|---|
Validar | Não | SIM | Nenhum(a) | Essa propriedade controla se a validação ocorre. Os valores válidos são Nenhum, Conteúdo
e Valor, Conteúdo
e Herdar. Para obter mais detalhes, consulte Validando Mensagens e Propriedades de Validação. |
validateMaster |
Ação de falha | Não | Não | Exceção | Essa propriedade controla o que acontecerá se a validação falhar. Você pode configurar essa propriedade somente se configurar Validar como Conteúdo ou Conteúdo e Valor. Os valores válidos são Rastreio do Usuário, Registro de Erros Local, Exceção e Lista de Exceções. |
Propriedade | M | P | Default | Descrição |
---|---|---|---|---|
Eventos | Não | Não | Nenhum | Eventos definidos para o nó são exibidos nesta guia. Por padrão, nenhum evento de monitoramento é definido em um nó do fluxo de mensagens. Utilize Incluir, Editar,
e Excluir para criar, alterar ou excluir eventos de monitoração no nó; consulte Configurando fontes de eventos de monitoramento utilizando propriedades de monitoramento para detalhes. É possível ativar e desativar eventos mostrados aqui selecionando ou desmarcando a caixa de opções Ativado. |
É possível recuperar informações que foram configuradas pelo nó HTTPAsyncRequest com par da seguinte propriedade em LocalEnvironment.Destination.HTTP:
Configuração | Descrição |
---|---|
UserContext | É possível recuperar dados de contexto que foram armazenados pelo nó
HTTPAsyncRequest do seguinte local no ambiente local:
Os dados de contexto são armazenados como um BLOB. Para recuperar dados de contexto, designe a variável como um tipo BLOB ou use um CAST. Por exemplo:
|