EMQはQoS 1/2メッセージをどのように保持しますか?


10

EMQ(アーランMQTTブローカー)が報告された「130万個の同時MQTT接続」と「分散、大規模スケーラブルで拡張性の高いMQTTメッセージ・ブローカー」である-それは潜在的に多数のクライアントが公開し、それを購読することができますので。一部のクライアントは常に切断されている可能性があります。

この質問としてMosquittoがQoS 1/2メッセージを格納するためのメモリを使い果たした場合はどうなりますか?蚊について尋ねます:

MQTTでは、QoSの1又は2のメッセージがなければならない少なくとも一度配信される(QOS 2件のメッセージが配信されなければならない正確に 1回)。クライアントが接続されていない場合、ブローカーはクライアントがメッセージを受信する準備ができるまでメッセージを保存する必要があります。

では、EMQはどのように配信まで、つまりブローカーのリブートまたはメモリー制限に関してQoS 1/2メッセージを保持するのでしょうか。


回答:


6

では、EMQはどのように配信まで、つまりブローカーのリブートまたはメモリー制限に関してQoS 1/2メッセージを保持するのでしょうか。

答えは、そうではないようです。彼らのバグトラッカーのこの問題は言う:

ブローカーの再起動後に永続的なクライアントセッションを保存する問題に直面しています。この機能は現在ブローカーに存在しませんか、それとも一部の構成がありませんか?

ブローカーはセッションを永続化しません。

また、さらにいくつかの問題を調査した後、私はこのレポートを見つけました:

最初に、emqttd.configで最大クライアント数を1000Kに設定しました。私たちのマシンには4コアの8 GBメモリがあり、120Kの同時接続を簡単に接続できますが、8 GBメモリを超えると、emqttdが終了します。マシンあたりの最大クライアント数を設定すると私が思ったのははるかに良いでしょう。

基本的に、v2.0.5以降:

  • メッセージがファイルに保持されていないようです。
  • ブローカーがメモリ不足になると、単にクラッシュします。

厳密には理想的ではありませんが、それが現在の振る舞いであると思われるため、メッセージの永続化がユースケースにとって重要である場合は、別のブローカーを使用してください。


1
ているように見える奇妙な大規模なスケーラブルなMQTTブローカーのために(控えめに言って)。
ガニマ2017年

(LevelDBを使用して)QoS1 / 2メッセージをディスクに永続化する分散MQTTブローカーを探している場合は、VerneMQ(vernemq.com)を参照してください。
Lars Hesel Christensen 2017

うーん、emqttはメッセージを単独で保存するわけではありませんが、メッセージをいくつかのデータベースに接続できるので、それがそうだと思います。確認しましたか?
Fabien Papleux 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.