2017-02-16 231 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