Skip to content

feat(debezium)!: consolidate cdc capture on the outbox table - #294

Open
dargmuesli wants to merge 11 commits into
betafrom
refactor/debezium/outbox-routing
Open

dargmuesli wants to merge 11 commits into
betafrom
refactor/debezium/outbox-routing

Conversation

@dargmuesli

@dargmuesli dargmuesli commented Aug 14, 2026 •

Copy link
Copy Markdown
Member

Points the Debezium connector at vibetype_private.outbox only, instead of capturing vibetype.event, vibetype.upload and the notification table directly, and routes outbox events with the EventRouter SMT to vibetype.outbox.<aggregate_type> topics keyed by aggregate_id. The outbox deletes its rows right after inserting them, so the connector skips delete and truncate operations and emits no tombstones. Routed topics are created with a 7 day retention; topics that already exist keep theirs and need it set once. The outbox purge job and the Grafana notification queries are removed, since the table is always empty now.

Rollout: outbox rows written after the database migration but before the connector picks up this configuration are not captured, so both have to go out in the same deployment, at a quiet moment. The former vibetype.vibetype.event, vibetype.vibetype.upload and vibetype.vibetype_private.notification topics receive nothing afterwards and can be deleted.

Depends on maevsi/sqitch#325.

@dargmuesli
dargmuesli force-pushed the refactor/debezium/outbox-routing branch from 2a408c1 to d6ddb05 Compare August 14, 2026 15:23
@dargmuesli
dargmuesli force-pushed the refactor/debezium/outbox-routing branch from d6ddb05 to 7393b60 Compare August 16, 2026 00:24
@dargmuesli
dargmuesli force-pushed the refactor/debezium/outbox-routing branch from 83de788 to 3a6ea51 Compare August 29, 2026 21:25
@dargmuesli

Copy link
Copy Markdown
Member Author

Holding this for the major after v22. Once it stops capturing vibetype.event directly, reccoom no longer receives events: its consumer still subscribes to vibetype.vibetype.event by default (KAFKA_TOPIC in src/consumer/config.py) and reads Debezium's op field, which the EventRouter output on vibetype.outbox.<aggregate_type> does not carry. reccoom needs a matching change, or KAFKA_TOPIC set here, before this can merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant