Interfaces de un adaptador de envío asíncrono
Los adaptadores que envían mensajes de uno en uno pueden enviar mensajes de forma sincrónica o asíncrona. Un adaptador envía mensajes de forma asíncrona cuando no bloquea el subproceso del proxy de transporte pero, en su lugar, utiliza un subproceso distinto al realizar operaciones de envío. Para poder enviar mensajes de forma asíncrona, un adaptador necesita implementar las interfaces siguientes:
IBTTransport
IBaseComponent
IBTTransportControl
IPersistPropertyBag
IBTTransmitter
Los siguientes pasos describen la secuencia de acciones que realiza un adaptador de envío para transmitir mensajes fuera del servidor a petición del motor de mensajería:
El motor de mensajería usa el proxy de transporte para pasar un mensaje saliente a un adaptador de envío llamando al método TransmitMessage de la interfaz IBTTransmitter .
El adaptador vuelve inmediatamente de TransmitMessage después de almacenar el mensaje que se va a enviar a alguna cola interna y devuelve
False
para bDeleteMessage. Esto indica al motor de mensajería que el mensaje se transmitirá de forma asíncrona.El adaptador envía el mensaje mediante su propio grupo de subprocesos.
Cuando la operación de envío se completa, el adaptador elimina el mensaje original de la base de datos de cuadro de mensajes. Obtiene un lote del motor de mensajería mediante el método IBTTransportBatch.GetBatch del proxy de transporte y, a continuación, llama a DeleteMessage.
La ilustración siguiente muestra las interacciones de objetos implicadas en la creación de un adaptador de envío asíncrono.
Flujo de trabajo para enviar un mensaje de forma asíncrona
Nota
Se recomienda que el adaptador realice un recuento de los mensajes cuyo procesamiento está en curso. El adaptador debe bloquear el método Terminate hasta que el recuento de mensajes haya alcanzado cero. En el caso de los adaptadores de envío, los mensajes cuyo proceso está en curso deberían controlarse de forma adecuada. Esto significa que cualquier mensaje entregado correctamente de forma asíncrona debe eliminarse de la cola privada de mensajes de la aplicación del adaptador para evitar que se envíe dos veces. En general, una vez que el motor de mensajería llama a Terminate , no acepta solicitudes para publicar nuevos mensajes desde el adaptador. La excepción a esto son los mensajes de respuesta relacionados con los pares petición-respuesta.
Consulte también
Variables de adaptador
Desarrollo de un adaptador de envío
Creación de instancias e inicialización de un adaptador de envío
Interfaces de un adaptador de envío sincrónico
Interfaces de un adaptador de envío sincrónico compatible con lotes
Interfaces de un adaptador de envío asincrónico compatible con lotes
Interfaces de un adaptador de envío asincrónico transaccional compatible con lotes
Interfaces de un adaptador de envío de petición-respuesta