Puntos de control
La implementación de Checkpoint se utiliza para capturar la relación causal entre los "pseudo-eventos" que ocurren dentro de IPF.
El ProcessingContext contiene un actualizable checkpoint campo que se relaciona con un identificador único de un objeto de procesamiento IPF dado.
ConnectorMessageMetadata
public class ConnectorMessageMetadata {
private String messageLogId;
private Checkpoint checkpoint;
private Checkpoint previousCheckpoint;
}
El ConnectorMessage la clase contiene un elemento llamado ConnectorMessageMetadata. Este elemento de metadatos permite que se asignen ciertas propiedades a la ConnectorMessage que se transmite entre las etapas del Conector sin influir directamente en el mensaje ProcessingContext.
ReceiveConnector
Para un ReceiveConnector, el mensaje entrante ProcessingContext se actualiza a través de las siguientes etapas del Conector:
-
CorrelationStage
-
Si el mensaje recibido contiene un contexto de procesamiento, cualquier contexto de procesamiento contenido en la correlación se fusionará con el contexto del mensaje. Consulte Fusión de Contexto documentación para más detalles.
-
-
MessageLoggingStage(solo se aplica si un MessageLogger se suministra al conector)
-
El mensaje entrante de ProcessingContext el punto de control se pasa al Mensaje registrado.
-
Si el proporcionado MessageLogger es una instancia de CheckpointAwareMessageLogger, el MessageLogEntry’s único
messageIdse asigna a la ProcessingContextcheckpointcampo.
-
El ProcessingContext se persiste entonces al resto del flujo del Conector.
SendConnector
Para un SendConnector, el mensaje saliente de ProcessingContext se actualiza a través de las siguientes etapas del Conector:
-
Antes de cualquier etapa en la MessageDelivery se crea la instancia
-
Nuevo
messageIdse calcula y se asigna a la ConnectorMessageMetadatamessageLogIdcampo. -
Si el proporcionado MessageLogger es una instancia de CheckpointAwareMessageLogger, el
messageIdse asigna a la ConnectorMessageMetadatacheckpointcampo. -
El punto de control de un actual SendRequest ProcessingContext se asigna a la ConnectorMessageMetadata
previousCheckpointcampo. -
Si el ConnectorMessageMetadata
checkpointel campo está presente, ambos ConnectorMessage ProcessingContext y mensaje objetivo ProcessingContext(si el mensaje objetivo es una instancia deUpdatableProcessingContextHolder) se actualizan con este valor, creando un vínculo causal entre el objeto IPF anterior y el ProcessingContext.
-
-
MessageLoggingStage(solo se aplica si un MessageLogger se suministra al conector)
-
ConnectorMessageMetadata
previousCheckpointse pasa al Mensaje registrado y se utiliza como un valor paraprocessingContext.checkpoint.
-
El ProcessingContext se persiste entonces al resto del flujo del Conector.
RequestReplySendConnector
Para un RequestReplySendConnector, el mensaje saliente de ProcessingContext puede ser actualizado dependiendo de lo proporcionado MessageLogger instancia:
-
El proporcionado MessageLogger es una instancia de CheckpointAwareMessageLogger:
-
El mensaje saliente’s ProcessingContext se actualiza de acuerdo con el SendConnector funcionalidad.
-
El mensaje objetivo ProcessingContext y ConnectorMessage El contexto de procesamiento se actualiza en el punto de control del registro de mensajes emitidos.
-
El registro de mensajes emitidos para la solicitud se guarda en el original. ProcessingContext campo de verificación de 's.
-
-
Cuando el RequestReplySendConnector recibe una respuesta.
-
Se emite un registro de mensajes, que se guarda en el ID del registro de mensajes emitido durante la fase de solicitud.
-
El ConnectorMessage El punto de control se actualiza al ID del registro de mensajes del registro de mensajes emitido durante la fase de respuesta.
-
-
-
El proporcionado MessageLogger no es una instancia de CheckpointAwareMessageLogger o no se proporciona en absoluto:
-
El ConnectorMessage ProcessingContext no se actualiza a lo largo del flujo del conector.
-
Ambos registros de mensajes emitidos (si corresponde) se almacenan en el punto de control en el ProcessingContext Punto de control de la solicitud inicial.
-
El ProcessingContext se persiste luego en el resto del flujo del Conector.