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 messageId se asigna a la ProcessingContext checkpoint campo.

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 messageId se calcula y se asigna a la ConnectorMessageMetadata messageLogId campo.

    • Si el proporcionado MessageLogger es una instancia de CheckpointAwareMessageLogger, el messageId se asigna a la ConnectorMessageMetadata checkpoint campo.

    • El punto de control de un actual SendRequest ProcessingContext se asigna a la ConnectorMessageMetadata previousCheckpoint campo.

    • Si el ConnectorMessageMetadata checkpoint el campo está presente, ambos ConnectorMessage ProcessingContext y mensaje objetivo ProcessingContext(si el mensaje objetivo es una instancia de UpdatableProcessingContextHolder) 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 previousCheckpoint se pasa al Mensaje registrado y se utiliza como un valor para processingContext.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.