The structure of the outbox table is currently configured by a range of configuration properties. As of
DBZ-4317, this was further built out by allowing for additional custom fields/columns to be configured. This is becoming a bit unwieldy, and a more Java-based way of configuring that entity is desirable. As per firstname.lastname@example.org, we could have this:
- Default outbox entities get contributed without the need for any user configuration or entity mappings at all.
- Users could extend the default outbox entities and add only the extra bits, think of their custom outbox entity mapped as @Entity where-as the default outbox implementation is mapped using @MappedSuperclass.
- Users could supply their own outbox entity without extending the supplied entity if they want full 100% control over the mapping, using an @Entity.
As part of this rework we should also re-consider how any additional properties are to be provided in ExportedEvent implementations. Instead of exposing them via a map, we could support retrieval from getters corresponding to the configured layout of the outbox event entity.