2017-02-16 10 views
0

Так что я в настоящее время изучаю несколько эффективных способов передачи данных по MQTT. JSON слишком велик для меня. Таким образом, я могу встретить протобуф, и это, похоже, подходит для использования.protobuf + mqtt routing сообщений

Но проблема, с которой я столкнулась, заключается в том, что у MQTT нет способа сообщить мне, откуда приходит сообщение. Так, например, если я получаю сообщение, я не могу сказать, исходило ли оно из источника A или источника B, в некоторых случаях это не проблема, но в моем случае они имеют разные данные, поэтому я не могу знать, какая модель I должны использоваться для десериализации.

Я использую реализацию протоков на C#. Есть ли способ частично десериализовать сообщение, если я принуждаю их иметь общее поле? (поле messageType). А затем возможность правильно десериализовать все сообщение.

Любая помощь приветствуется.

ответ

1

MQTT не есть способ, чтобы сказать мне, где сообщение приходит из

Конечно, это делает. Это цель сообщения topic. Вы будете публиковать такие темы, как sourceA/messageTypeX или sourceB/messageTypeY.

Частичная десериализация будет подразумевать какое-либо наследование (все ваши типы сообщений реализуют общее поле), а не как протобуф.

Не ходите искать объекты, подобные наследованию класса, хотя - протокольные буферы этого не делают.

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

Смежные вопросы