This sounds like it might be vulnerable to dead consumers causing WAL to pile up without the right settings/periodic checks.
Yes, exactly.
> This sounds like it might be vulnerable to dead consumers causing WAL to pile up without the right settings/periodic checks.
There are some subtleties around this indeed. You should monitor backlog of replication slots, so to identify inactive consumers as you say. Also, there are some corner cases you need to take care of: when listening to changes from a low-traffic database on the same PG host that also has a high-traffic database, the replication slot may not be acknowledged often enough. Debezium mitigates this by optionally writing changes to a dummy heartbeat table in the low-traffic database, so to advance the replication slot.
In Postgres 13 there's also a new option "max_slot_wal_keep_size" which limits WAL size retained by a replication slot. This prevents unbounded WAL growth, at the risk of consumers to miss events if they are down for too long.
All in all, proper monitoring and alerting is key.