Как EMQ сохраняет сообщения QoS 1/2?

10

EMQ (Erlang MQTT Broker) является «распределенная, масштабируемая, расширяемость MQTT брокер сообщений» с сообщенной «1,3 миллиона одновременных соединений MQTT» - так что потенциально позволяет большое количество клиентов , публиковать и подписаться на него. Кажется вероятным, что некоторые клиенты могут быть отключены в любой момент времени.

Как этот вопрос Что произойдет, если Mosquitto не хватит памяти для хранения сообщений QoS 1/2? спрашивает о Москитто:

В MQTT сообщения с QoS 1 или 2 должны доставляться как минимум один раз (сообщения QoS 2 должны доставляться ровно один раз). Если клиент не подключен, брокер должен хранить сообщение до тех пор, пока клиент не будет готов его получить.

Итак, как EMQ сохраняет сообщения QoS 1/2 до доставки, т.е. до перезагрузки брокера или в отношении ограничений памяти?

Ганима
источник
Связано: iot.stackexchange.com/q/809/54
Ганима

Ответы:

6

Итак, как EMQ сохраняет сообщения QoS 1/2 до доставки, т.е. до перезагрузки брокера или в отношении ограничений памяти?

Кажется, ответ: нет . Эта проблема на их трекере ошибок говорит:

Я сталкиваюсь с проблемой хранения постоянных клиентских сессий после перезапуска брокера. Эта функция в данный момент отсутствует в брокере или мне не хватает какой-либо конфигурации?

Брокер не будет сохранять сессии.

Кроме того, после изучения еще нескольких проблем, я нашел этот отчет :

Изначально я установил максимальное количество клиентов в 1000K в emqttd.config. Наша машина имеет 8 ГБ памяти с 4 ядрами, я могу легко подключиться к 120K одновременному соединению, но когда она превышает 8 ГБ памяти, emqttd прекращает работу. То, что я думал, это установить максимальное количество клиентов на машину, было бы намного лучше.

По сути, начиная с версии 2.0.5:

  • Сообщения не сохраняются в файле.
  • Как только у брокера заканчивается память, он просто падает.

Не совсем идеально, но это, кажется, текущее поведение, поэтому, если постоянные сообщения имеют решающее значение для вашего варианта использования, используйте другого брокера.

Аврора0001
источник
1
Кажется странным (если не сказать больше) для масштабируемого брокера mqtt.
Ганима
Если вы ищете распределенного брокера MQTT, который сохраняет сообщения QoS1 / 2 на диск (используя LevelDB), то, возможно, посмотрите на VerneMQ ( vernemq.com ).
Ларс Хезель Кристенсен
Мммх, хотя emqtt не хранит сообщение само по себе, оно может быть подключено к нескольким базам данных, поэтому я предполагаю, что это то, что он делает. Вы это проверяли?
Фабьен