Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
The author says the outbox pattern should "always" be used.
I agree with the goal -- one should definitely never publish an event externally before it is committed to DB! But I think using a "post-commit sequence number" is even more powerful than the outbox pattern.
Sadly few DBs seems to supoort this well with low latency. CosmosDB has great support for a post commit low latency change feed
A hack for mssql is here:
https://github.com/vippsas/mssql-changefeed/blob/main/MOTIVA...
More about this way of publishing events:
https://github.com/vippsas/zeroeventhub
Interesting approach, I use a very similar methodology in Marmot (https://github.com/maxpert/marmot) to do CDC for SQLite via triggers, and then these changes are published over NATS, replicated over to other nodes. So row-level replication powered by similar outbox except it uses NATS and JetStreams's quorum property to ensure reliable recovery.
The author says the outbox pattern should "always" be used.
I agree with the goal -- one should definitely never publish an event externally before it is committed to DB! But I think using a "post-commit sequence number" is even more powerful than the outbox pattern.
Sadly few DBs seems to supoort this well with low latency. CosmosDB has great support for a post commit low latency change feed
A hack for mssql is here:
https://github.com/vippsas/mssql-changefeed/blob/main/MOTIVA...
More about this way of publishing events:
https://github.com/vippsas/zeroeventhub