Acuse de recibo de mensaje
Cada sesión que no es una sesión con transacción tiene una modalidad de acuse de recibo que determina cómo se acusa recibo de los mensajes recibidos por la aplicación. Hay disponibles tres modalidades de acuse de recibo y la selección de la modalidad de acuse de recibo afecta al diseño de la aplicación.
La información de este tema sólo es relevante si una aplicación se conecta a un gestor de colas IBM® MQ o a un bus de integración de servicios WebSphere® Application Server . La información no es relevante para una conexión en tiempo real con un intermediario.
XMS utiliza el mismo mecanismo para acusar recibo de los mensajes que utiliza JMS.
Si una sesión no es una sesión con transacción, la forma en la que se acusa recibo de los mensajes recibidos por la aplicación se determina mediante la modalidad de acuse de recibo de la sesión. Las tres modalidades de acuse de recibo se describen en los párrafos siguientes:
- XMSC_AUTO_ACKNOWLEDGE
- La sesión acusa recibo automáticamente de cada mensaje recibido por la aplicación.
Si los mensajes se entregan de forma síncrona a la aplicación, la sesión acusa recibo de cada mensaje cada vez que se completa una llamada Receive.
Si la aplicación recibe un mensaje correctamente, pero una anomalía impide el acuse de recibo, el mensaje pasa a estar disponible para volverse a entregar. Por lo tanto, la aplicación debe poder ser capaz de manejar un mensaje que se vuelve a entregar.
- XMSC_DUPS_OK_ACKNOWLEDGE
- La sesión acusa recibo de los mensajes recibidos por la aplicación en momentos que selecciona.
El uso de esta modalidad de acuse de recibo reduce la cantidad de trabajo que debe realizar la sesión, pero una anomalía que impide el acuse de recibo de mensaje podría provocar que más de un mensaje pasara a estar disponible para una nueva entrega. Por lo tanto, la aplicación debe poder ser capaz de manejar los mensajes que se vuelven a entregar.
- XMSC_CLIENT_ACKNOWLEDGE
- La aplicación acusa recibo de los mensajes que recibe llamando al método Acusar recibo de la clase Message.
La aplicación acusa recibo de cada mensaje de forma individual, o puede recibir un lote de mensajes y llamar al método Acusar recibo solo para el último mensaje que recibe. Cuando se llama al método Acusar recibo, se acusará recibo de todos los mensajes recibidos desde la última vez que se llamó al método.
Junto con cualquiera de estas modalidades de acuse de recibo, una aplicación puede detener y reiniciar la entrega de mensajes en una sesión llamando al método Recuperar de la clase Session. Se vuelven a entregar los mensajes de los que ya se había acusado recibo previamente. Sin embargo, podría ser que no se entregaran en la misma secuencia en la que se habían entregada anteriormente. Mientras tanto, podrían haber llegado los mensajes con prioridad superior y algunos de los mensajes originales podrían haber caducado. En el dominio punto a punto, algunos de los mensajes originales podrían haber sido consumidos por otra aplicación.
Una aplicación puede determinar si un mensaje se está volviendo a entregar examinando el contenido del campo de cabecera JMSRedelivered del mensaje. La aplicación lo hace llamando al método Obtener JMSRedelivered de la clase Message.