Post Processors

This feature is currently in incubating state. In future versions, we might change the exact semantics, configuration options, and so forth, depending on the feedback we receive. Please let us know if you encounter any problems.

While connectors can be configured with transformations to perform lightweight per message mutations, a transformation requires that the immutable ConnectRecord, or more aptly the SourceRecord has to be re-created. A Debezium Post-Processor is called earlier in the event chain prior to the hand-off to the messaging runtime, and more importantly, operates on the mutable event payload’s Struct type. This allows for a more efficient way to make specific modifications to an event’s payload prior to the construction of the SourceRecord.

However, there are many other benefits to using a PostProcessor over a transformation. For example, Debezium connectors expose both a BeanRegistry for looking up connector constructed objects by name and a ServiceRegistry for doing service locator acquisition of common Debezium services using dependency injection. In simple terms, this means that a PostProcessor can get references to common Debezium internal objects such as a JdbcConnection, CommonConnectoConfig, ValueConverterProvider, and others. This allows creating complex post-processing tasks easy within the Debezium runtime.

The following post processor implementations are provided by Debezium:

Post Processor Description

Re-selects specific columns that may not have been provided by the change event, such as TOASTed columns or Oracle LOB columns that were not modified by the current event’s change.