現在のところ、EMQ(Erlang MQTTブローカー)はQoS 1/2メッセージをディスクに永続化しないようです:EMQはどのようにQoS 1/2メッセージを永続化しますか?
したがって、予期しないサーバーの再起動が発生した場合、QoS 1/2レベルのメッセージを少なくとも1回だけ配信する必要があるにもかかわらず、メモリ制限やその他のイベントメッセージが失われる可能性があります。
QoS 1/2メッセージをディスクに永続化して配信を保証するMQTTブローカーはありますか?
現在のところ、EMQ(Erlang MQTTブローカー)はQoS 1/2メッセージをディスクに永続化しないようです:EMQはどのようにQoS 1/2メッセージを永続化しますか?
したがって、予期しないサーバーの再起動が発生した場合、QoS 1/2レベルのメッセージを少なくとも1回だけ配信する必要があるにもかかわらず、メモリ制限やその他のイベントメッセージが失われる可能性があります。
QoS 1/2メッセージをディスクに永続化して配信を保証するMQTTブローカーはありますか?
回答:
Mosquittoはメモリ内のメッセージをディスクに保存すると思います。
永続性[true | false] trueの場合、接続、サブスクリプション、メッセージデータは、persistence_locationで指定された場所にあるmosquitto.dbのディスクに書き込まれます。mosquittoを再起動すると、mosquitto.dbに保存されている情報が再ロードされます。データは、mosquittoが閉じるときにディスクに書き込まれ、autosave_intervalで定義された定期的な間隔で書き込まれます。永続データベースの書き込みは、SIGUSR1シグナルにmosquittoを送信することによっても強制される場合があります。falseの場合、データはメモリにのみ保存されます。デフォルトはfalseです。
VerneMQは、受け入れられたQoS1 / 2メッセージがディスクに書き込まれるときに(LevelDBを使用して)配信を保証するMQTTブローカーの例です。VerneMQは、ある意味で、EMQと似ていますが、EMQもオープンソースであり、クラスタリングをサポートしています(ただし、別のテクノロジーを使用しています)。完全な開示、私はVerneMQエンジニアです。