Wie behält EMQ QoS 1/2 -Nachrichten bei?

10

Der EMQ (Erlang MQTT Broker) ist ein "verteilter, massiv skalierbarer, hoch erweiterbarer MQTT-Nachrichtenbroker" mit einer gemeldeten "1,3 Millionen gleichzeitigen MQTT-Verbindungen", sodass möglicherweise eine große Anzahl von Clients ihn veröffentlichen und abonnieren kann. Es ist wahrscheinlich, dass einige Clients zu einem bestimmten Zeitpunkt getrennt werden.

Wie diese Frage Was passiert, wenn Mosquitto nicht mehr genügend Speicher zum Speichern von QoS 1/2 -Nachrichten hat? fragt nach Mosquitto:

In MQTT, Nachrichten mit QoS 1 oder 2 müssen mindestens einmal geliefert werden (QoS 2 Nachrichten müssen geliefert werden genau einmal). Wenn der Client nicht verbunden ist, muss der Broker die Nachricht speichern, bis der Client bereit ist, sie zu empfangen.

Wie behält EMQ QoS 1/2 -Nachrichten bis zur Zustellung bei, dh einen Neustart des Brokers oder in Bezug auf Speicherbeschränkungen?

Ghanima
quelle
Siehe auch
Ghanima

Antworten:

6

Wie behält EMQ QoS 1/2 -Nachrichten bis zur Zustellung bei, dh einen Neustart des Brokers oder in Bezug auf Speicherbeschränkungen?

Die Antwort scheint zu sein: es tut nicht . Dieses Problem auf ihrem Bug-Tracker sagt:

Ich habe das Problem, dauerhafte Client-Sitzungen nach dem Neustart des Brokers zu speichern. Ist diese Funktion derzeit nicht im Broker vorhanden oder fehlt mir eine Konfiguration?

Der Broker wird die Sitzungen nicht fortsetzen.

Nachdem ich ein paar weitere Probleme durchgearbeitet hatte, fand ich diesen Bericht :

Anfangs habe ich die maximale Anzahl von Clients in emqttd.config auf 1000 KB festgelegt. Unser Computer verfügt über 8 GB Speicher mit 4 Kernen. Ich kann problemlos eine gleichzeitige Verbindung von 120 KB herstellen, aber wenn der Speicher 8 GB überschreitet, wird emqttd von selbst beendet. Was ich dachte, ist ein maximaler Client pro Maschine, wäre weitaus besser.

Im Wesentlichen ab Version 2.0.5:

  • Nachrichten scheinen nicht in einer Datei gespeichert zu sein.
  • Sobald der Broker keinen Speicher mehr hat, stürzt er einfach ab.

Nicht gerade ideal, aber dies scheint das aktuelle Verhalten zu sein. Wenn das Fortbestehen von Nachrichten für Ihren Anwendungsfall von entscheidender Bedeutung ist, verwenden Sie einen anderen Broker.

Aurora0001
quelle
1
Scheint für einen massiv skalierbaren mqtt-Broker seltsam (gelinde gesagt) zu sein.
Ghanima
Wenn Sie nach einem verteilten MQTT-Broker suchen, der QoS1 / 2-Nachrichten auf der Festplatte (mit LevelDB) beibehält, dann schauen Sie sich vielleicht VerneMQ ( vernemq.com ) an.
Lars Hesel Christensen
Mmmh, während emqtt die Nachricht nicht alleine speichert, kann sie mit einer Reihe von Datenbanken verbunden werden. Ich gehe also davon aus, dass dies der Fall ist. Hast du das überprüft?
Fabien Papleux