Documentation for a newer release is available. View Latest

Registro de Mensajes

En muchas aplicaciones a menudo hay requisitos para mantener un registro de cada mensaje; esto puede ser para monitoreo, auditoría o propósitos de data warehousing. Independientemente del caso de uso, la biblioteca de connector proporciona una función opcional de registro de mensajes que publicará tanto los mensajes enviados como los recibidos.

Los mensajes registrados se publican usando la clase MessageLogEntry definida en message-logger-api.

Interfaz Message Logger

Para agregar registro de mensajes, debe proporcionarse una implementación de la interfaz funcional MessageLogger al construir el connector. La implementación proporcionada puede ser más compleja que la demostrada aquí y puede publicar en una base de datos o una cola.

MessageLogger messageLogger = messageLogEntry -> {
    log.info("logging message: {}", messageLogEntry);
};
initiatingReceiveConnectorBuilder()
        .withMessageLogger(messageLogger);
Para que las entradas de registro de mensajes emitidas utilicen el comportamiento de Checkpointing, debe suministrar a su connector una implementación de la interfaz CheckpointAwareMessageLogger.

Supporting context

La clase MessageLogEntryEnricher contiene un elemento llamado supportingData. Este tiene una clave de tipo String y un valor de tipo Object, y se rellena con una combinación de elementos de cabecera que fueron añadidos al TransportMessage y, luego, cualquier supportingData pasado, en ese orden.

Cualquier choque de claves entre los dos mapas se resolverá añadiendo los detalles de la cabecera tal como están, y los elementos de supportingData en conflicto obtendrán el prefijo supportingData-, es decir, supportingData-kafka-key.

Enriquecimiento de Message Log Entry

Los objetos MessagesLogEntry pueden enriquecerse opcionalmente antes de ser publicados por el MessageLogger.

public interface MessageLogEntryEnricher<T> {
    void enrich(ConnectorMessage<T> connectorMessage, MessageLogEntry messageLogEntry);
}

Para agregar enriquecimiento de entradas de registro de mensajes, proporcione una implementación de la interfaz funcional MessageLogEntryEnrichment al construir el connector.

MessageLogEntryEnricher<ExampleType> messageLogEntryEnricher = (connectorMessage, messageLogEntry)
        -> messageLogEntry.setSupportingData(Map.of("enriched", "true"));
initiatingReceiveConnectorBuilder()
        .withMessageLogger(messageLogger)
        .withMessageLogEntryEnricher(messageLogEntryEnricher);