Puntos de control

La implementación de Checkpoint se utiliza para capturar la relación causal entre "pseudo-events " 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 al ConnectorMessage que se transmite entre las etapas del Conector sin influir directamente en el mensaje ProcessingContext.

ReceiveConnector

Para un ReceiveConnector, el ProcessingContext del mensaje entrante se actualiza a través de las siguientes etapas del Connector:

  • Etapa De Correlación

    • 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 punto de control ProcessingContext del mensaje entrante se pasa al mensaje registrado.

    • Si el proporcionado MessageLogger es una instancia de CheckpointAwareMessageLogger, el MessageLogEntry’s único messageId está asignado al ProcessingContext checkpoint campo.

El ProcessingContext se persiste entonces al resto del flujo del Conector.

SendConnector

Para un SendConnector, el ProcessingContext del mensaje saliente se actualiza a través de las siguientes etapas del Conector:

  • Antes de cualquier etapa en la que se crea la instancia de MessageDelivery

    • Nuevo messageId se calcula y se asigna al ConnectorMessageMetadata messageLogId campo.

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

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

    • Si el ConnectorMessageMetadata checkpoint el campo está presente, tanto el ConnectorMessage ProcessingContext como el ProcessingContext del mensaje de destino (si el mensaje de destino es una instancia de UpdatebleProcessingContextHolder) 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 ProcessingContext del mensaje saliente puede ser actualizado dependiendo de lo proporcionado. MessageLogger instancia:

  • El proporcionado MessageLogger es una instancia de CheckpointAwareMessageLogger:

    • El ProcessingContext del mensaje saliente se actualiza de acuerdo con el SendConnector funcionalidad.

      • El mensaje objetivo ProcessingContext y el Contexto de Procesamiento de ConnectorMessage se actualizan a Checkpoint para el emitido.message log.

      • El emitido message log para la solicitud se registra en el campo Checkpoint del ProcessingContext original.

    • Cuando el RequestReplySendConnector recibe una respuesta.

      • A message log se emite, se guarda en el message log ID del message log emitido durante la fase de solicitud.

      • El punto de control ConnectorMessage se actualiza a la message log ID del message log emitido durante la fase de respuesta.

  • El proporcionado MessageLogger no es una instancia de CheckpointAwareMessageLogger o no se proporciona en absoluto:

    • El Contexto de Procesamiento de Mensajes del Conector no se actualiza a lo largo del flujo del conector.

    • Ambos emitieron message logs(si corresponde) se registran en el Punto de Control del Contexto de Procesamiento a partir de la solicitud inicial.

El ProcessingContext se persiste entonces al resto del flujo del Conector.