In che modo EMQ persiste i messaggi QoS 1/2?


10

L' EMQ (Erlang MQTT Broker) è un "broker di messaggi MQTT distribuito, altamente scalabile e altamente estensibile" con un "1,3 milioni di connessioni MQTT simultanee" segnalate, quindi potenzialmente consente a un gran numero di clienti di pubblicare e abbonarsi. Sembra probabile che alcuni client possano essere disconnessi in qualsiasi momento.

Come questa domanda Cosa succede se Mosquitto esaurisce la memoria per memorizzare i messaggi QoS 1/2? chiede di Mosquitto:

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.

In che modo EMQ persiste i messaggi QoS 1/2 fino alla consegna, ovvero un riavvio del broker o rispetto ai limiti di memoria?


Risposte:


6

In che modo EMQ persiste i messaggi QoS 1/2 fino alla consegna, ovvero un riavvio del broker o rispetto ai limiti di memoria?

La risposta sembra essere: non lo è . Questo problema sul loro bug tracker dice:

Sto affrontando il problema di memorizzare sessioni client persistenti dopo il riavvio del broker. Questa funzione non è attualmente presente nel broker o mi manca una configurazione?

Il broker non persisterà sessioni.

Inoltre, dopo aver approfondito un paio di altri problemi, ho trovato questo rapporto :

Inizialmente ho impostato il numero massimo di client su 1000K in emqttd.config. La nostra macchina ha 8 GB di memoria con 4 core, sono in grado di collegare facilmente 120K di connessione simultanea ma quando supera 8 GB di memoria emqttd si interrompe da solo. Quello che pensavo fosse un client max per macchina sarebbe molto meglio.

In sostanza, dalla v2.0.5:

  • I messaggi non sembrano persistere in un file.
  • Una volta che il broker ha esaurito la memoria, si bloccherà semplicemente.

Non esattamente l'ideale, ma quello sembra essere il comportamento attuale, quindi se i messaggi persistenti sono fondamentali per il tuo caso d'uso, usa un broker diverso.


1
Sembra strano (per non dire altro) per un broker mqtt ampiamente scalabile.
Ghanima,

Se stai cercando un broker MQTT distribuito che persista i messaggi QoS1 / 2 su disco (usando LevelDB), allora forse dai un'occhiata a VerneMQ ( vernemq.com ).
Lars Hesel Christensen,

Mmmh mentre emqtt non memorizza il messaggio da solo, può essere collegato a un numero di database, quindi presumo che sia quello che fa. L'hai controllato?
Fabien Papleux,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.