Message Log ging
En muchas aplicaciones, a menudo existen requisitos relacionados con el mantenimiento de un registro de cada mensaje; esto podría ser para fines de monitoreo, auditoría o almacenamiento de datos. Independientemente del caso de uso, la biblioteca de conectores proporciona un opcional message log instalación de mensajería que publicará tanto los mensajes enviados como los recibidos.
Los mensajes registrados se publican utilizando el MessageLogEntry clase definida en el message-logger-api.
Message Logger Interfaz
Para añadir message log ging, una implementación de la MessageLogger se debe proporcionar una interfaz funcional al construir el conector. La implementación proporcionada puede ser más compleja de lo demostrado aquí y puede publicar en una base de datos o en una cola.
MessageLogger messageLogger = messageLogEntry -> {
log.info("logging message: {}", messageLogEntry);
};
initiatingReceiveConnectorBuilder()
.withMessageLogger(messageLogger);
Para tener el emitido message log las entradas utilizan el Punto de control comportamiento, debe proporcionar una implementación del CheckpointAwareMessageLogger interfaz a su conector.
|
Contexto de apoyo
La clase MessageLogEntryEnricher contiene un elemento llamado supportingData. Este tiene una clave de tipo String y un valor de tipo Object, y se llena con una combinación de elementos de encabezado que fueron añadidos a la TransportMessage y luego cualquier supportingData pasado, en ese orden.
Cualquier conflicto clave entre los dos mapas se resolverá añadiendo los detalles del encabezado tal como están, y los elementos supportingData en conflicto recibirán un supportingData- prefijo, es decir,supportingData-kafka-key.
Message Log Enriquecimiento de Entradas
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 añadir message log enriquecimiento de entradas, proporcione una implementación de la interfaz funcional MessageLogEntryEnrichment al construir el conector.
MessageLogEntryEnricher<ExampleType> messageLogEntryEnricher = (connectorMessage, messageLogEntry)
-> messageLogEntry.setSupportingData(Map.of("enriched", "true"));
initiatingReceiveConnectorBuilder()
.withMessageLogger(messageLogger)
.withMessageLogEntryEnricher(messageLogEntryEnricher);