Entrega ordenada de mensajes en BizTalk Server
La entrega ordenada de mensajes garantiza que los mensajes publicados con un determinado orden en la base de datos de cuadro de mensajes se entreguen a los suscriptores correspondientes en ese mismo orden.
Configurar la entrega ordenada de mensajes
La entrega ordenada de mensajes se puede configurar en los siguiente lugares:
- Recibir forma en una orquestación
- Puerto de envío
Entrega ordenada con transportes existentes
Los protocolos empleados en determinados transportes, como ARCHIVO y HTTP, no son coherentes con la noción de entrega ordenada. Sin embargo, incluso con este tipo de transportes, si el puerto enlazado con el transporte está marcado para entrega ordenada, BizTalk Server aplica la característica de entrega ordenada y, de este modo, garantiza que el transporte no obtenga el siguiente mensaje de salida hasta que no se haya enviado correctamente el actual. Para ello, BizTalk Server pasa cada mensaje al adaptador del transporte en un único lote y espera hasta que el adaptador haya eliminado correctamente el mensaje del cuadro de mensajes antes de enviar al adaptador el siguiente mensaje, en otro lote.
Entrega ordenada con adaptadores personalizados
Existen algunas cuestiones especiales que deben tenerse en cuenta con relación a los adaptadores de recepción personalizados. Si crea un adaptador personalizado que es compatible con la característica de entrega ordenada al recibir mensajes, el adaptador debería hacer lo siguiente:
Después de enviar un lote de mensajes, el adaptador de recepción personalizado debe esperar a la devolución de llamada de BatchComplete de BizTalk Server antes de enviar el siguiente lote. Para obtener más información, consulte Interfaces para un adaptador de recepción de Batch-Supported.
Si un mensaje tiene errores en la canalización, se debe suspender, si es posible de forma no reanudable. Use el BTS. SuspendAsNonResumable message context property in BizTalk Server para marcar el mensaje correctamente.
Nota
El orden de los mensajes se puede interrumpir si un mensaje suspendido se reanuda después. Si no desea que se produzca este comportamiento, suspenda los mensajes con errores como no reanudables.
Para obtener más información sobre cómo crear un adaptador personalizado, consulte Developing Custom Adapters.
Condiciones del procesamiento de entrega ordenada de mensajes de un extremo a otro
Para proporcionar una entrega ordenada de extremo a extremo, deben cumplirse las siguientes condiciones:
Los mensajes se tienen que recibir con un adaptador que conserve el orden de los mensajes cuando se envíen al servidor BizTalk Server. En BizTalk Server, algunos ejemplos de estos adaptadores son MSMQ y MQSeries. Además, se pueden usar adaptadores HTTP o SOAP para enviar los mensajes de manera ordenada, aunque en ese caso el cliente HTTP o SOAP necesita aplicar el orden al enviar los mensajes de uno en uno.
Debe suscribirse a estos mensajes con un puerto de envío que tenga la opción Entrega ordenada establecida en
True
.Si se usa una orquestación para procesar los mensajes, solo se debe usar una única instancia de la orquestación, la orquestación debe configurarse para usar un convoy secuencial y la propiedad Entrega ordenada del puerto de recepción de la orquestación debe establecerse
True
en .
Restricciones
No se admite la entrega ordenada de mensajes en:
Puertos de envío dinámicos en BizTalk Server 2013 R2 y versiones anteriores
Puertos de envío dinámicos en BizTalk Server 2016 (y versiones más recientes) para esos tipos de adaptadores que no admiten la entrega ordenada en puertos de envío estáticos
Transportes de reserva
Interacciones
Si configura la entrega ordenada para un puerto de envío, tenga en cuenta las siguientes interacciones con otros comportamientos configurados en BizTalk Server:
Si el puerto de envío tiene establecido "Detener envío de los siguientes mensajes si hay un error en el mensaje actual" como:
Falso. Sólo se suspende (como no reanudable) el mensaje con errores y se siguen procesando todos los mensajes sucesivos. Esto permite mantener el orden de los mensajes sin errores, pero puede causar discontinuidades en la secuencia. Por ejemplo, si se reciben los mensajes 101, 102 y 103, y si se suspende el 102, se seguirán procesando los mensajes 101 y 103 en orden.
Verdadero. Se suspende la instancia de puerto de envío si alguno de los mensajes no puede procesarse. Esto provoca la suspensión de todos los mensajes sucesivos del conjunto ordenado de mensajes. El orden de los mensajes se mantiene al impedir que se entreguen los mensajes sucesivos si no se ha entregado antes el mensaje con errores.
Si un puerto de envío de solicitud-respuesta tiene la propiedad "Detener el envío de mensajes posteriores en el error del mensaje actual" establecida
true
en y si el procesamiento de intercambio recuperable está configurado para la fase de desensamblaje de la canalización de recepción para la respuesta, el puerto de envío no deja de enviar mensajes (es decir, la instancia no se suspende) si hay un error recuperable en el desensamblar la respuesta.Antes de eliminar un puerto de envío que tenga establecida la característica de entrega ordenada, asegúrese de que no tiene instancias asociadas. Si tiene instancias asociadas, las debería finalizar antes de eliminar el puerto de envío.
Entrega ordenada a transportes de archivo
Los mensajes llegan al adaptador de archivo en secuencia. El adaptador de archivo puede anexar mensajes a un único archivo o escribir una secuencia de archivos, con los resultados siguientes:
Si los datos del mensaje se anexan a un único archivo, los mensajes individuales se anexan en orden. La opción de entrega ordenada en un puerto de envío que utiliza el adaptador de archivo sólo tiene sentido si el transporte de envío funciona en modo de anexar
Si los mensajes se escriben en archivos individuales, el orden se refleja en los nombres de archivo, que tendrán un nombre asignado de forma secuencial. En este caso, para los archivos escritos por el adaptador, las propiedades del sistema de archivos relativas a información cronológica (por ejemplo, fecha y hora de creación o modificación del archivo) no reflejan necesariamente la secuencia de llegada de los mensajes.
Impacto de la entrega ordenada sobre el rendimiento
Nota
A partir de BizTalk Server 2020, para los puertos de envío dinámicos con entrega ordenada donde no es necesario mantener el pedido en diferentes ubicaciones de salida, se puede lograr un mayor rendimiento mediante el uso de varias instancias de puerto de envío para procesar los mensajes enviados a diferentes ubicaciones de salida en paralelo.
Para implementar la entrega ordenada, BizTalk Server debe serializar el procesamiento de los mensajes ordenados en varios puntos de la ruta de los mensajes. Para ello, se usan técnicas de implementación escalada, como el uso de varias instancias de host para el procesamiento paralelo de mensajes. Cuando se utiliza la entrega ordenada, incluso los puertos configurados para ejecutarse en varias instancias de host sólo se ejecutan en una instancia de host para garantizar este tipo de entrega. Sin embargo, en esta situación, se sigue manteniendo una disponibilidad elevada: si hay un error en una instancia de host que esté procesando los mensajes con entrega ordenada, el mensaje con errores se volverá a procesar en otra instancia de host disponible.
Cuando la entrega ordenada está habilitada, el intervalo de reintento predeterminado es de 5 minutos. Para mejorar el rendimiento, configúrelo en el valor mínimo (un minuto). La propiedad Intervalo de reintento puede aceptar un valor de cero (0), pero cero (0) no es válido. El recuento de reintentos también se puede ajustar al número de reintentos necesarios. Por ejemplo, si sabe que la solicitud debe procesarse en 1 minuto y el destino del puerto de envío siempre es accesible, establezca ambos valores en <1.
Para cambiar los valores de Reintento, vaya a Configuración de opciones avanzadas de transporte para un puerto de envío.
Para obtener más información sobre la entrega ordenada, consulte:
BizTalk: Opciones de procesamiento de mensajes ordenados de un extremo a otro
Consulte también
Entrega ordenada de mensajes con el adaptador de MSMQ
Entrega ordenada de mensajes con el adaptador de MQSeries