Меняется ли Mosquitto с 1.4.15 на 1.5, отменяются ли преимущества QoS 1 и 2? - PullRequest
0 голосов
/ 28 марта 2019

Я только что заметил из изменения в mosquitto 1.4.5 на 1.5, что переменная retry_interval была удалена с приведенным ниже обоснованием. Написано в файле change_log.txt. см. github ссылка .

Это изменение в поведении может быть оправдано с учетом того, когда возможно, произошел тайм-аут.

  • Если соединение ненадежное и оборвалось, но без одного конца Заметив, что сообщения будут повторены при повторном подключении. Отправка дополнительные PUBLISH или PUBREL ничего бы не изменили.

  • Если клиент перегружен / не может ответить / имеет медленное соединение, то отправка дополнительной PUBLISH или PUBREL не поможет клиенту поймать вверх. Как только отставание очищено, клиент ответит. Если это не так не сможет помочь, отправка дополнительных дубликатов.

Рационально удаление, если клиент перегружен и все равно не может ответить, поэтому повторная отправка не требуется. Но согласно определению QoS 1 и 2 протокола в Oasis. MQTT-v3.1.1-Os

4.4 повтор доставки сообщения

Когда Клиент повторно соединяется с CleanSession, установленным в 0, и Клиент, и Сервер ДОЛЖНЫ повторно отправлять любые неподтвержденные Пакеты PUBLISH (где QoS> 0) и Пакеты PUBREL, использующие их Оригинальные идентификаторы пакетов.

Я попытался прочитать изменение исходного кода, и оно удаляет повторную попытку. Я получил рациональное изменение, но не нарушило ли оно соответствия протокола программного обеспечения? Если сеть не работает в течение длительного времени, повторная попытка отправки будет бесполезной, но если сбой сети будет прерывистым, устранение повторной попытки сделает QoS> 0 ненадежным для этого посредника?

1 Ответ

2 голосов
/ 28 марта 2019

Параметр retry_interval контролировал случай, когда сообщение не было подтверждено во время нормальной работы, то есть клиент, по-видимому, не отключился, но не отправлял подтверждения.

Повтор доставки сообщения, описанный в спецификации, охватывает случай, когда клиент переподключается. Такое поведение присутствует в Mosquitto, поэтому нарушения спецификации нет, и сообщения будут повторены.

...