2017-02-16 239 views
0

所以我目前正在探索一些通过MQTT传输数据的有效方法。 JSON对我来说太大了。所以我可以通过protobuf,这似乎符合用例。protobuf + mqtt消息路由

但是我遇到的问题是MQTT没有办法告诉我消息来自哪里。举例来说,如果我收到一条消息,我无法确定它是源于A还是源B在某些情况下,这不是问题,但在我的情况下,这些数据具有不同的数据,因此我无法知道模型I必须使用反序列化。

我正在使用protobuf的C#实现。如果我强制他们拥有一个共同的领域,有什么方法可能部分反序列化一条消息? (messageType字段)。然后能够正确地反序列化整个消息。

任何帮助表示赞赏。

回答

1

MQTT没有办法告诉我在哪里的消息从

当然它确实来了。这是消息主题的用途。您将会发布像sourceA/messageTypeXsourceB/messageTypeY这样的主题。

部分反序列化意味着某种继承(所有的消息类型实现一个公共字段),这不是protobuf的设计方式。

不要去寻找与类继承类似的工具,但协议缓冲区不这样做。

https://developers.google.com/protocol-buffers/docs/csharptutorial