O EMQ (Erlang MQTT Broker) é um "intermediário, MQTT altamente distribuído, altamente escalável e extensível", com um "1,3 milhão de conexões simultâneas MQTT simultâneas" relatadas - portanto, potencialmente permite que um grande número de clientes publique e assine. Parece provável que alguns clientes possam ser desconectados a qualquer momento.
Como esta pergunta O que acontece se o Mosquitto ficar sem memória para armazenar mensagens de QoS 1/2? pergunta sobre Mosquitto:
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.
Então, como o EMQ persiste mensagens de QoS 1/2 até a entrega, ou seja, uma reinicialização do broker ou com relação aos limites de memória?
Respostas:
A resposta parece ser: não . Este problema no rastreador de erros diz:
Além disso, depois de pesquisar mais algumas questões, encontrei este relatório :
Essencialmente, a partir da v2.0.5:
Não é exatamente o ideal, mas esse parece ser o comportamento atual; portanto, se as mensagens persistentes forem críticas para o seu caso de uso, use um broker diferente.
fonte