是否可以使Mosquito Mqtt和RTI DDS互相交谈?
我希望我的Mqtt订阅者从DDS发布者订阅数据,反之亦然。
答案 0 :(得分:0)
不,您将必须编写自己的桥
答案 1 :(得分:0)
我将我的评论从hardilib的回复转移到自己的答案中,而不是将其隐藏在评论中。
为了使“ DDS DataWriter与MQTT订阅者对话”或“ MQTT发布者与DDS DataReaders对话”,您需要实现一个桥接应用程序:
1)订阅MQTT消息队列(或DDS主题)。
2)将数据从MQTT消息对象(或DDS样本)转换(“格式转换”)到DDS样本(或MQTT消息对象)。
3)使用已配置的DDS DataWriter实例将数据写入DDS主题(或将数据写入MQTT消息队列)。
如果两个基础结构有效地使用了相同的数据类型(在IDL中定义),则很简单。
最佳情况是,您可以实现一个类,该类具有用作消息实例(由MQTT读取器返回或由MQTT编写器编写)和DDS Type示例实例(该消息实例)的所有必需方法。可以同时被DataWriter或DataReader接受)。在这种情况下,您将暂挂在DataReader上,直到获得一个新样本为止,然后立即使用收到的样本调用MQTT编写器。或者,您在MQTT队列上暂存,接受传入的消息,然后立即调用DataWriter编写使用DDS DataWriter刚收到的MQTT消息。
最坏的情况是它们是完全不同的类型,在这种情况下,您需要编写一对转换方法,以理解读取的内容和需要写入的内容的结构。
现实将在中间某个地方。如果仅将MQTT类型定义为可变长度的“ ascii字符串”,则将变得更加困难,在这种情况下,您的转换方法需要能够将数据编组(序列化/反序列化)到DDS中和从DDS中分离出来。