Это более общий вопрос, однако он может решаться по-разному в разных клиентах или версиях протокола или, возможно, даже в версиях сервера.
Итак, я говорю о подписке QOS уровня 2. В этом случае пакеты обрабатываются по порядку. А раз есть протокол подтверждения, значит, следующее сообщение не может быть обработано, пока не будет подтверждено первое? Или это упорядочение только для приема, а не для подтверждения?
В случае, если обратное давление оказывается через подтверждения, как это относится к темам с подстановочными знаками? Порядок на самом деле является реальной концепцией только для отдельных тем, содержащих темы, а не для всего подстановочного знака. Означает ли это, что обратное давление также обрабатывается для каждой темы или оно поддерживается на основе общей подписки с подстановочными знаками?
Редактировать:
поэтому я провел несколько тестов с HiveMQ и Misquitto. Оба они демонстрируют одинаковое поведение: как только вы не вызываете обратный вызов для пакета QOS2, все это перестает отвечать на что-либо. кажется, что он даже не имеет ничего общего с подстановочными знаками.
Итак, в качестве теста у меня есть три темы: test/1, test/2, test2/1.
Сообщения test/2 никогда не подтверждаются.
Я попытался решить проблему с помощью wireshark, чтобы узнать, что происходит. Что происходит после того, как я отправляю сообщение на test/2, последующие сообщения никогда не отправляются подписчику с подстановочным знаком, независимо от темы. Это будет означать тот факт, что подписки с подстановочными знаками действительно не заботятся о семантике основных тем. Кажется, это еще хуже: если я разделю подписки с подстановочными знаками на две отдельные, то есть на test/1 и test/2, получится одно и то же. Любой невыпущенный пакет QOS › 0 заблокирует все соединение! Так что это, похоже, не указывает на прямую проблему с клиентом, но уже связано с сервером. Итак, снова возникает мой первоначальный вопрос: это соответствует спецификации или это просто любопытство реализации?