У меня есть две машины, и я тестирую мостовые соединения MQTT с полезными нагрузками Sparkplug B.
У меня есть мосты, работающие должным образом, но когда я имитирую некоторые точки отказа, как указано на изображении ниже, все работает не так, как ожидалось. Я ожидаю, что NDEATH будет виден на брокере на машине B, когда любая из трех точек на изображении отключится.
Когда я убиваю издателя или локального брокера MQTT на машине A, я действительно вижу NDEATH, как и ожидалось, когда подписан на MQTT-брокер на машине B, но когда я отключаю разъем между машинами A и B, как указано в № 3 на изображении я не вижу НЕДЕЙСТВИЯ! Я долго ждал, чтобы убедиться, что у 60-секундной проверки активности было достаточно времени, чтобы среагировать, что, как я понимаю, обычно в 1,5 раза больше, чем обычно.
Публикатор и Брокер на машине А продолжают работать, и когда соединение в точке №3 возвращается в оперативный режим, все сообщения доставляются, но я ожидал, что при отключенном мостовом соединении любые узлы, опубликовавшие последний узел, будут & testament (LWT) увидит NDEATH из-за потери соединения в любой момент.
Я тестировал с mosquitto, vernemq и немного с hive-ce, однако функциональность hive-ce сильно ограничена. Я что-то упустил в моем понимании моста MQTT? Разве NDEATH не следует отправлять во всех трех сценариях?
Это имеет смысл, спасибо за четкий ответ и понимание здесь, я видел тему уведомлений по умолчанию, которая может быть полезна, и надеялся, что будет отправлен NDEATH для этой ошибки № 3 после перезапуска локального брокера на машине A генерирует один. Я предположил, что это было сгенерировано удаленным брокером на другой стороне моста, но, возможно, это был локальный брокер, который сделал это как часть отключения, как я видел это на удаленном брокере.