In MQTT, i messaggi con QoS 1 o 2 devono essere recapitati almeno una volta (i messaggi QoS 2 devono essere consegnati esattamente una volta). Se il client non è connesso, il broker deve archiviare il messaggio fino a quando il client non è pronto a riceverlo.
Il blog di HiveMQ ha un punto interessante:
Ma cosa succede se un cliente non viene online per molto tempo? Il vincolo per la memorizzazione dei messaggi è spesso il limite di memoria del sistema operativo. Non esiste un modo standard su cosa fare in questo scenario. Dipende totalmente dal caso d'uso. In HiveMQ forniremo la possibilità di manipolare i messaggi in coda e di eliminarli.
Dal momento che questo sembra dipendere dal broker, come fa Mosquitto a gestire questa situazione? Si arresta in modo anomalo dopo aver esaurito la memoria o i vecchi messaggi vengono infine eliminati?