MQTT: очередь сообщений на стороне сервера

Я использую mqtt для реализации одной из систем уведомлений по электронной почте. Я также планирую использовать его для триггерных уведомлений внутри веб-приложения. Я не понимаю, хранит ли MQTT данные на стороне сервера, когда мы отправляем URL-адрес MQTT с идентификатором издателя в формате JSON? Причина, по которой я спрашиваю об этом, заключается в том, что в моем случае MQTT хранит только последние переданные данные, и если я отправлю еще один, то предыдущий исчезнет. Я хочу знать, присутствует ли он на стороне MQTT с рождения (поскольку MQ означает очередь сообщений), и я не использовал или должен быть реализован на стороне сервера/потребителя?


person Shaggie    schedule 15.05.2015    source источник


Ответы (1)


В Интернете есть распространенная ошибка ... MQTT означает MQ Telemetry Transport, а не Message Queuing Telemetry Transport. Он был создан IBM (совместно с Eurotech) и входил в семейство продуктов MQ IBM. MQTT не имеет очереди. Брокер получает сообщение по теме и пересылает его всем подписчикам этой темы. Есть два основных варианта такого поведения:

  • Если издатель отправляет сообщение с активным флагом «сохранить», брокер сохраняет это сообщение (только это). Если клиент подписывается на эту тему, брокер немедленно отправляет это последнее сообщение хранилища. Это так называемое «последнее известное сообщение».
  • Если подписчик подключается к брокеру с параметром «чистый сеанс» равным false, брокер сохраняет все подписки и все сообщения, только если клиент находится в автономном режиме. Это как очередь, но не очень очередь. Если «чистая сессия» ложна, если клиент отключается, но некоторые издатели отправляют сообщения в тему, на которую он подписан, брокер сохраняет эти сообщения. Когда клиент вернется в сеть, он получит все потерянные сообщения.

Паоло.

person ppatierno    schedule 15.05.2015
comment
На самом деле MQTT теперь означает... MQTT. - person ralight; 15.05.2015