В чем разница между числом Bdseq и Seq в MQTT Sparkplug - PullRequest
0 голосов
/ 02 апреля 2019

Я использую библиотеку C # Sparkplug и пытаюсь опубликовать данные. Мне нужно уточнить номер BdSeq и номер сообщения Seq.

Должны ли мы использовать только одну переменную для номера seq и BdSeq? Начните с 0 и увеличивайте до 255 при публикации NBIRTH, DBIRTH, NDATA и DDATA?

В чем разница между номером BdSeq и номером сообщения Seq.

Кроме того, я видел, что метрика для Bdseqnum принимает в документе тип данных UInt64. Если лимит составляет только до 255, почему мы используем UInt64?

Спасибо.

1 Ответ

0 голосов
/ 19 июня 2019

Число bdSeq и число seq используются по-разному и не должны иметь одну и ту же переменную.

Номер seq должен быть частью каждого сообщения DBIRTH / NBIRTH / DDATA / NDATA / DDEATH. Он используется для обеспечения доставки сообщений по порядку любому потребителю данных.

bdSeq используется для отслеживания общего сеанса клиента Sparkplug. Это число является специальной метрикой, которая присутствует только в сообщениях NBIRTH / NDEATH. Он используется для сопоставления NDEATH (опубликованного сервером MQTT от имени отключенного клиента Sparkplug) с ранее опубликованным сообщением NBIRTH. Потребители данных используют NDEATH, чтобы знать, что клиент Sparkplug находится в автономном режиме. Причина, по которой это необходимо, заключается в том, что клиент Sparkplug может потерять соединение, переподключиться и опубликовать новый NBIRTH, прежде чем сервер MQTT опубликует NDEATH из предыдущего сеанса. В этом случае новый NBIRTH будет содержать новый номер bdSeq , и любые последующие сообщения NDEATH со старыми номерами bdSeq могут игнорироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...