The outbox routing SMT is widely used in the Debezium community and has matured over the last year or so. It should be ready for inclusion into the downstream product.
Open questions / to-dos:
- Why is there table.field.event.key and table.field.event.payload.id? Can we get rid of the latter? If so, deprecate it (the same outcome can be achieved using the generic fields mechanism); don't show it in downstream docs (ENG)
- Rename debezium.op.invalid.behavior into table.op.invalid.behavior and change its group; deprecate old name upstream, don't show it downstream (ENG)
- Additional field handling should be unified across all the Debezium SMTs; we'll revisit this more generally also for Debezium 2.0 (DBZ-3899)
- Configuration errors are not properly reported currently; when using the validation API of Kafka Connect, an invalid option (e.g. incorrect regexp such as "transforms.outbox.route.topic.regex" : "(?<routedByValue>.*[a-z)", won't be reported at all; here I'm not sure whether KC's validate actually allows for validating SMT options; we also don't expose this though when actually applying the invalid configuration; in this case, the exception bubbled up to KC just states "Unable to validate config", with the actual issue only being described in the connector logs
- The reference to ActivateTracingSpan must be put behind some guard, so to allow usage of that SMT without the OpenTracing JARs being present