WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Nodo HTTPAsyncResponse

Utilice el nodo HTTPAsyncRequest con el nodo HTTPAsyncResponse para crear un par de flujos de mensajes que interactúen con un servicio web de manera asíncrona.

Este tema contiene los apartados siguientes:

Finalidad

El nodo HTTPAsyncRequest envía una solicitud de servicio web, pero el nodo no espera a que se reciba la respuesta de servicio web asociada. La respuesta de servicio web la recibe el nodo HTTPAsyncResponse, que puede estar en un flujo de mensajes independiente pero debe estar en el mismo grupo de ejecución. Los nodos se utilizan como un par y correlacionan las respuestas con las solicitudes originales utilizando un identificador exclusivo. El nodo HTTPAsyncRequest pasa el socket de solicitud al nodo HTTPAsyncResponse para que el servidor de fondo lo utilice para la respuesta. Si la latencia del servidor de fondo es alta, es posible que no responda en el tiempo de espera de socket.

Pasar el socket HTTP al nodo HTTPAsyncResponse permite el flujo de mensajes para recuperar el siguiente mensaje de la cola sin esperar a la respuesta y por lo tanto utiliza hebras y almacenamiento de modo más eficaz que un flujo de mensajes síncrono.

El nodo HTTPAsyncResponse maneja los mensajes en los siguientes dominios de mensaje:

  • DFDL
  • XMLNSC
  • JSON
  • BLOB
  • MIME
  • MRM
  • XMLNS

El nodo HTTPAsyncResponse se encuentra en el cajón HTTP de la paleta y está representado en el WebSphere Message Broker Toolkit mediante el siguiente icono:

Icono de nodo HTTPRequest

Utilización del nodo HTTPAsyncResponse en un flujo de mensajes

Utilice el nodo HTTPAsyncResponse como un par con el nodo HTTPAsyncRequest para realizar una solicitud HTTP y recibir una respuesta de manera asíncrona. El nodo HTTPAsyncRequest envía una solicitud al servicio web. El nodo HTTPAsyncResponse recibe la respuesta del servicio web y analiza la respuesta para incluirla en el árbol de salida.

Para obtener más información sobre cómo trabajar con HTTP, consulte Proceso de mensajes HTTP.

Si se ha proporcionado la propiedad de entorno local LocalEnvironment.Destination.HTTP.RequestIdentifier al nodo HTTPAsyncRequest emparejado, ésta se pasa al entorno local para el nodo HTTPAsyncResponse.

Manejo de errores

El nodo interactúa directamente con un servicio externo utilizando TCP/IP; por consiguiente, puede experimentar los tipos de error siguientes:

  • Los errores generados por TCP/IP, por ejemplo conexión restablecida por igual.

    Si el nodo detecta estos errores, genera una excepción y la propaga al terminal de anomalías.

  • Errores devueltos por el servidor web. Estos errores se representan mediante códigos de estado HTTP que están fuera del rango 100 a 299. Si el nodo detecta estos errores, direcciona la respuesta al terminal de errores mientras sigue las propiedades especificas en el separador Error.

    La respuesta se produce como un mensaje BLOB porque el nodo no puede determinar en qué formato estará la respuesta. Los mensajes con un código de estado de redirección (3xx) también se manejan del mismo modo.

Códigos de respuesta HTTP

El nodo HTTPAsyncResponse trata los códigos de estado de la serie 100 como una respuesta 'continuar', descarta la respuesta actual y espera otra respuesta del servidor web.

Los códigos de estado de la serie 200 se tratan como satisfactorios. Las propiedades de nodo determinan el formato del mensaje de salida que se genera y la respuesta se direcciona al terminal de salida del nodo.

Los códigos de estado de la serie 300 son para redirección. El nodo HTTPAsyncResponse no soporta la redirección y los códigos de redirección se tratan como un error.

Los códigos de estado de las series 400 y 500 son errores. Si el nodo HTTPAsyncRequest envía la solicitud satisfactoriamente pero el servicio web no se realiza correctamente, HTTPResponse se inserta en el árbol de mensajes y se propaga al terminal de errores del nodo HTTPAsyncResponse. Es posible que tenga que utilizar un nodo Compute para convertir, mediante CAST, esta respuesta a una página de códigos adecuada a fin de poder visualizar los datos, por ejemplo:
Set OutputRoot.XMLNS.error850 = CAST(InputRoot.XMLNS.error.BLOB as CHAR CCSID 850);
Para obtener información sobre HTTP, consulte Protocolo de transferencia de hipertexto - HTTP/1.1. Para obtener más información sobre los códigos de retorno HTTP, consulte Códigos de respuesta HTTP.

Tiempos de espera

Puede especificar un intervalo de tiempo de espera en el nodo HTTPAsyncRequest para que si la duración de la operación de solicitud-respuesta entera es mayor que la duración especificada, la solicitud se propague al terminal de anomalías de uno de los nodos emparejados. El intervalo de tiempo de espera se aplica al intervalo que empieza cuando el nodo HTTPAsyncRequest envía la solicitud y finaliza cuando el nodo HTTPAsyncResponse recibe por completo la respuesta.

Para cada solicitud que el nodo HTTPAsyncRequest procesa, utiliza una conexión para enviar la solicitud y pasa la conexión al nodo HTTPAsyncResponse emparejado. Si se especifica el intervalo de tiempo de espera, el socket se cierra si el intervalo caduca. Este cierre asegura que una solicitud reciba solamente la respuesta correcta y que todos los datos de respuesta para una solicitud que ha excedido el tiempo de espera se descarten.

El proceso de solicitud-respuesta se divide entre el nodo HTTPAsyncRequest y el nodo HTTPAsyncResponse. Si se produce un tiempo de espera durante la fase de solicitud del proceso, se propaga una excepción al terminal de anomalías del nodo HTTPAsyncRequest. De forma similar, si se produce un tiempo de espera durante la fase de respuesta del proceso, se propaga la solicitud al terminal de anomalías del nodo HTTPAsyncResponse.

En la mayoría de los casos el tiempo de espera se produce cuando se espera una respuesta de servidor, en cuyo caso se utiliza el terminal de anomalías del nodo HTTPAsyncResponse. En algunos casos se puede producir un tiempo de espera cuando el nodo de solicitud envía datos al servidor. En este caso, se utiliza el terminal de anomalías del nodo HTTPAsyncRequest.

Manipulación de cabeceras

La cabecera HTTPResponse, que contiene las cabeceras que devuelve el servicio web remoto, es la primera cabecera del mensaje (después de Propiedades) que se propaga desde el nodo. Esta acción se adopta independientemente de las opciones que se seleccionen. Por consiguiente, para la respuesta del nodo HTTPAsyncResponse que se debe poner en una cola de WebSphere MQ, manipule las cabeceras para que MQMD sea la primera cabecera (después de las propiedades (Properties)).

El ejemplo siguiente contiene ESQL que elimina la HTTPHeader:
SET OutputRoot = InputRoot;
SET OutputRoot.HTTPResponseHeader = NULL; 
El ejemplo siguiente contiene ESQL para mover la HTTPHeader y, por consiguiente, conservar la información que proporciona:
SET OutputRoot = InputRoot;
DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader;
DETACH HTTPHeaderRef;
ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;

Terminales y propiedades

Los terminales del nodo HTTPAsyncResponse están descritos en la siguiente tabla.

Terminal Descripción
Failure (Anomalía) El terminal de salida al que se dirige un mensaje si se ha detectado una anomalía durante su proceso en el nodo.
Out (Salida) El terminal de salida al que se direcciona el mensaje si representa la finalización satisfactoria de la solicitud de servicio web y si se requiere proceso adicional dentro del flujo de mensajes.
Error El terminal de salida al que se direccionan los mensajes que incluyen un código de estado HTTP que no está dentro del rango de 200 a 299, incluidos los códigos de redirección (3xx). El nodo HTTPAsyncResponse no soporta la redirección.
Catch (de captación) El terminal de salida al que se direcciona un mensaje si se genera una excepción en sentido descendente y después este nodo la capta.

Las tablas siguientes describen las propiedades de nodo. La columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco en el panel si tiene que entrar un valor cuando no hay definido ningún valor predeterminado); la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo de intermediario para desplegarlo).

Las propiedades de descripción del nodo HTTPAsyncResponse están descritas en la siguiente tabla.

Propiedad O C Valor predeterminado Descripción
Nombre de nodo No No El tipo de nodo, HTTPAsyncResponse El nombre del nodo.
Descripción corta No No   Descripción breve del nodo.
Descripción larga No No   Texto que describe la finalidad del nodo en el flujo de mensajes.

La propiedad básica del nodo HTTPAsyncResponse se describe en la siguiente tabla.

Propiedad O C Valor predeterminado Descripción Propiedad de mandato mqsiapplybaroverride
Identificador exclusivo No   Especifique el identificador exclusivo que enlaza el par de nodos HTTPAsyncRequest y HTTPAsyncResponse. asyncRequestCorrelator

En la tabla siguiente se describen las propiedades de Análisis de mensajes de respuesta del nodo HTTPAsyncResponse.

Propiedad O C Valor predeterminado Descripción
Dominio de mensajes No No BLOB Dominio que se utiliza para analizar el mensaje. Si el campo está en blanco, el valor predeterminado es BLOB.
Modelo de mensaje No No Deseleccionado Nombre o ubicación del archivo de esquemas de modelos de mensaje en el que se define el mensaje. Esta lista se llena con todos los archivos de esquemas de modelos de mensajes disponibles para el Dominio de mensajes que ha seleccionado.
Mensaje No No Deseleccionado Nombre o ubicación de la raíz de mensaje dentro del archivo de esquemas de modelos de mensaje. Esta lista se llena con todos los mensajes disponibles que se han definido en el Modelo de mensaje que ha seleccionado.
Formato físico No No Deseleccionado Nombre del formato físico del mensaje. Si está utilizando el analizador MRM o IDOC, seleccione el formato físico del mensaje de entrada de la lista. Esta lista incluye todos los formatos físicos que ha definido para este modelo de mensaje seleccionado. Si establece la propiedad Dominio de mensajes en DataObject, puede establecer esta propiedad en XML o IDoc ALE de SAP. Establezca esta propiedad en IDoc ALE de SAP cuando tenga que analizar una corriente de bits desde un origen externo y generar un árbol de mensajes.

Las propiedades Opciones de análisis del nodo HTTPAsyncResponse se describen en la siguiente tabla.

Propiedad O C Valor predeterminado Descripción
Temporización del análisis No No A petición Esta propiedad controla cuándo se analiza un mensaje de respuesta. Los valores válidos son A petición, Inmediato y Completo. El valor predeterminado es A petición, lo que hace que se retrase el análisis del mensaje.

Para obtener una descripción completa de esta propiedad, consulte Análisis a petición.

Crear árbol utilizando tipos de datos de esquema XML No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos de sintaxis en el árbol de mensajes con tipos de datos obtenidos del esquema XML. Esta propiedad sólo se puede seleccionar si se establece la propiedad Validar del separador Validación en Contenido o Contenido y valor.
Utilizar analizador compacto XMLNSC para dominio XMLNS No No No seleccionado Esta propiedad controla si el analizador compacto XMLNSC se utiliza para mensajes en el dominio XMLNS. Si establece esta propiedad, los datos del mensaje de respuesta aparecerán bajo XMLNSC en los nodos que estén conectados al terminal de salida cuando la cabecera MQRFH2 de entrada o el Dominio de las propiedades de Análisis de mensajes de respuesta sea XMLNS.
Retener contenido mixto No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensajes cuando encuentra texto mixto en un mensaje de respuesta. Si selecciona el recuadro, se crean elementos para el texto mixto. Si deselecciona el recuadro, el texto mixto se ignora y no se crea ningún elemento.
Retener comentarios No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra comentarios en un mensaje de respuesta. Si selecciona el recuadro, se crean elementos para los comentarios. Si deselecciona el recuadro, los comentarios se ignoran y no se crea ningún elemento.
Retener instrucciones de proceso No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensajes cuando encuentra instrucciones de proceso en un mensaje de respuesta. Si selecciona el recuadro, se crean elementos para las instrucciones de proceso. Si deselecciona el recuadro, las instrucciones de proceso se ignoran y no se crea ningún elemento.
Elementos opacos No No Espacio en blanco Esta propiedad se utiliza para especificar una lista de elementos en el mensaje de respuesta que se analizan opacamente por el analizador XMLNSC. El análisis opaco sólo se realiza si la validación no está habilitada (es decir, si la propiedad Validar está establecida en Ninguno); las entradas que se especifiquen en Elementos opacos se omiten si la validación está habilitada.

Las propiedades de validación del nodo HTTPAsyncResponse se describen en la siguiente tabla.

Para ver una descripción completa de estas propiedades, consulte Propiedades de validación.

Propiedad O C Valor predeterminado Descripción Propiedad de mandato mqsiapplybaroverride
Validar No Ninguno Esta propiedad controla si tiene lugar la validación. Los valores válidos son Ninguno, Contenido y valor, Contenido y Heredar.

Si desea ver información más detallada, consulte Validar mensajes y Propiedades de validación.

validateMaster
Acción para anomalía No No Excepción Esta propiedad controla qué sucede si falla la validación. Sólo puede establecer esta propiedad si establece Validar en Contenido o Contenido y valor. Los valores válidos son Rastreo de usuario, Anotaciones de error locales, Excepción y Lista de excepciones.  
Las propiedades de supervisión del nodo se describen en la siguiente tabla.
Propiedad O C Valor predeterminado Descripción
Sucesos No No Ninguno Los sucesos que se han definido para el nodo se visualizan en este separador. De forma predeterminada, no se define ningún suceso de supervisión en ningún nodo en un flujo de mensajes. Utilice Añadir, Editar y Suprimir para crear, cambiar o suprimir sucesos de supervisión para el nodo; consulte Configuración de orígenes de sucesos de supervisión utilizando propiedades de supervisión para obtener detalles.

Puede habilitar e inhabilitar sucesos que se muestran aquí seleccionando o deseleccionando el recuadro Habilitado.

Alteraciones temporales del entorno local

Puede recuperar información establecida por el nodo HTTPAsyncRequest emparejado desde la propiedad siguiente bajo LocalEnvironment.Destination.HTTP:

Valor Descripción
UserContext Puede recuperar los datos de contexto que ha almacenado el nodo HTTPAsyncRequest desde la ubicación siguiente en el entorno local:
SET myVar = InputLocalEnvironment.Destination.HTTP.UserContext;
Los datos se almacenan como BLOB. Para recuperar los datos de contexto, asigne la variable como de tipo BLOB o utilice un CAST. Por ejemplo:
DECLARE myVar BLOB;
SET myVar = InputLocalEnvironment.Destination.HTTP.UserContext;
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 17:00:47


Tema de referenciaTema de referencia | Versión 8.0.0.5 | bc19309_