No MQTT, as mensagens com QoS 1 ou 2 devem ser entregues pelo menos uma vez (as mensagens QoS 2 devem ser entregues exatamente uma vez). Se o cliente não estiver conectado, o broker deverá armazenar a mensagem até que o cliente esteja pronto para recebê-la.
O blog do HiveMQ tem um ponto interessante:
Mas o que acontece se um cliente não fica online por muito tempo? A restrição para armazenar mensagens geralmente é o limite de memória do sistema operacional. Não há uma maneira padrão sobre o que fazer nesse cenário. Depende totalmente do caso de uso. No HiveMQ, forneceremos a possibilidade de manipular as mensagens na fila e eliminá-las.
Como isso parece depender do corretor, como o Mosquitto lida com essa situação? Ele simplesmente falha após ficar sem memória ou as mensagens antigas são finalmente eliminadas?