Where the first answer states that: "RabbitMQ presumes that consumers are mostly online, and any messages "in wait" (persistent or not) are held opaquely (i.e. no cursor). RabbitMQ pre-2.0 (2010) would fall over if your consumers were too slow, but now it's robust for online and batch consumers - but clearly large amounts of persistent messages sitting in the broker was not the main design case for AMQP in general."
(It's contrasted with Kafka, which is "designed for holding and distributing large volumes of messages")
Still, I see no reason why you say that it's Erlang that causes this?
You can implement a queue that works better for batch work in Erlang, it's just that it'd be closer to a data store.