Como o EMQ persiste mensagens de QoS 1/2?


10

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:


6

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?

A resposta parece ser: não . Este problema no rastreador de erros diz:

Estou enfrentando o problema de armazenar sessões persistentes do cliente após a reinicialização do broker. No momento, esse recurso não está presente no broker ou estou faltando alguma configuração?

O broker não persistirá nas sessões.

Além disso, depois de pesquisar mais algumas questões, encontrei este relatório :

Inicialmente, configurei o máximo de clientes para 1000K em emqttd.config. Nossa máquina possui 8 GB de memória com 4 núcleos, eu posso conectar facilmente a conexão simultânea de 120K, mas quando exceder 8 GB de memória, o emqttd termina automaticamente. O que eu pensei que é definir um cliente máximo por máquina seria muito melhor.

Essencialmente, a partir da v2.0.5:

  • As mensagens parecem não persistir em um arquivo.
  • Quando o broker ficar sem memória, ele simplesmente trará.

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.


11
Parece estranho (para dizer o mínimo) para um broker mqtt massivamente escalável.
Ghanima 15/01

Se você estiver procurando por um broker MQTT distribuído que persista mensagens QoS1 / 2 no disco (usando o LevelDB), talvez dê uma olhada no VerneMQ ( vernemq.com ).
Lars Hesel Christensen

Mmmh, enquanto o emqtt não armazena a mensagem por si só, ela pode ser conectada a vários bancos de dados, então estou assumindo que é isso que ela faz. Você verificou isso?
Fabien Papleux
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.