| As a Kafka alternative, has anyone attempted to use PostgreSQL logical replication with table partitioning for
async service communication? Proof of concept (with diagrams in the comments):
https://gist.github.com/shuber/8e53d42d0de40e90edaf4fb182b59... Services would commit messages to their own databases along with the rest
of their data (with the same transactional guarantees) and then messages
are "realtime" replicated (with all of its features and guarantees) to the
receiving service's database where their workers (e.g. https://github.com/que-rb/que, skip locked polling, etc) are waiting to
respond by inserting messages into their database to be replicated back. Throw in a trigger to automatically acknowledge/cleanup/notify messages and
I think we've got something that resembles a queue? Maybe make that same
trigger match incoming messages against a "routes" table (based on message
type, certain JSON schemas
in the payload, etc)
and write matches to the que-rb jobs table instead for some kind of
distributed/replicated work queue hybrid? I'm looking to poke holes in this concept before sinking anymore time exploring the idea. Any feedback/warnings/concerns would be much appreciated, thanks for your time! Other discussions: * https://old.reddit.com/r/PostgreSQL/comments/gkdp6p/logical_... * https://dba.stackexchange.com/questions/267266/postgresql-lo... * https://www.postgresql.org/message-id/CAM8f5Mi1Ftj%2B48PZxN1... |
[1] debezium.io/ [2] https://debezium.io/documentation/reference/configuration/ou...