Earlier quoted context omitted.
In Postgres land bloat refers to dead tuples that are left in place during certain operations and need to be vacuumed later. It’s challenging to write a queue that doesn’t create bloat, hence why this project is citing it as a feature.
Can’t you just partition the table by time (or whatever) and drop old partitions and not worry about vacuuming? Why do you need to keep around completed jobs forever?
If you're looking for kafka-like semantics, you might want to keep messages around.
Your temporal partition idea is spot on. But instead of dropping old partitions, you can instead archive them.