Почему живой подписчик получает только последнее опубликованное сообщение

M2mqtt включен в мой проект asp.net mvc. Столкнулись с проблемой синхронизации информации о подписке. введите описание изображения здесь Когда более одного клиента публикуют материалы по одной конкретной теме, клиент может легко подписаться на них.

предположим, что в одной ситуации, когда происходит публикация, клиент отключается/не в сети, когда он жив, а затем получает только последнее опубликованное сообщение, а не все опубликованные сообщения. Что делать?Это проблема на MQTT?Как живой клиент получает все опубликованные сообщения.

Соединение M2mqtt с использованием брокера с помощью приведенного ниже синтаксиса

 public static MqttClient SmartHomeMQTT { get; set; }

  SmartHomeMQTT = new MqttClient(brokerAddress, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, true, new X509Certificate(Resource.ca), null, MqttSslProtocols.TLSv1_2, client_RemoteCertificateValidationCallback);
  SmartHomeMQTT.Connect("6ea592c5-4b2f-481a-bb0a-eccbe8579d14", "####", "####", false, 3600);

**Примечание. **Четвертый параметр метода Connect имеет значение false для свойства clean_session, но это не работает.


person shamim    schedule 23.02.2016    source источник
comment
Взгляните на этот вопрос, ответьте и прокомментируйте. Попробуйте установить для флага clean_session значение false, использовать тот же идентификатор клиента при повторном подключении, публиковать сообщения с использованием QoS 1 или 2.   -  person Alessandro Da Rugna    schedule 23.02.2016


Ответы (1)


Чтобы подписчики получали все сообщения, даже те, которые публикуются, когда они находятся в автономном режиме (что называется сохранением сообщений), вам необходимо сделать несколько вещей:

  1. Убедитесь, что у подписчиков отключена «Чистая сессия».
  2. Убедитесь, что каждый подписчик использует уникальный идентификатор клиента.
  3. Используйте QoS 1 или 2

Вы не говорите, какой сервер MQTT вы используете, но вам нужно убедиться, что реализация сервера также поддерживает его.

person njh    schedule 23.02.2016
comment
Спасибо за ваш ответ. Я использовал приведенный ниже синтаксис, как вы говорите, но он не работает. Пожалуйста, проверьте мое обновленное описание вопроса. - person shamim; 23.02.2016