MQTT Sparkplug中的Bdseq和Seq编号有什么区别

时间:2019-04-02 00:38:14

标签: mqtt

我正在使用C#Sparkplug库并尝试发布数据。我需要澄清有关BdSeq编号和消息Seq编号的信息。

我们应该仅对seq和BdSeq编号使用一个变量吗?从0开始,直到发布NBIRTH,DBIRTH,NDATA和DDATA时递增到255?

BdSeq编号和消息Seq编号之间有什么区别。

此外,我已经看到Bdseqnum的指标在文档中采用UInt64的数据类型。如果限制只有到255,为什么我们要使用UInt64?

谢谢。

1 个答案:

答案 0 :(得分:0)

bdSeq 编号和 seq 编号具有不同的用途,并且不应共享相同的变量。

seq 号应该是每个DBIRTH / NBIRTH / DDATA / NDATA / DDEATH消息的一部分。它用于确保将消息按顺序传递给数据的任何使用者。

bdSeq 用于跟踪Sparkplug客户端的整体会话。这是一个仅在NBIRTH / NDEATH消息中存在的特殊度量标准。它用于将NDEATH(由MQTT Server代表断开连接的Sparkplug客户端发布)与先前发布的NBIRTH消息进行匹配。数据的使用者使用NDEATH知道Sparkplug客户端处于脱机状态。之所以有此必要,是因为在MQTT服务器从上一个会话发布NDEATH之前,Sparkplug客户端可能会失去连接,重新连接并发布新的NBIRTH。在这种情况下,新的NBIRTH将包含一个新的 bdSeq 编号,任何后续的具有旧 bdSeq 编号的NDEATH消息都可以忽略。