12.1.8 类型传播
在Fast DDS中,默认情况下利用远程数据类型发现(Remote Data Types Discovery)来发现远程类型并传播本地类型。类型传播的过程涉及到向EDP消息(即发现阶段的消息)添加元信息,并使用一组专用的内置端点在网络中的不同DomainParticipants之间传输类型定义。
根据应用程序的设计和部署需求,可能希望更改默认的类型传播行为,以节省带宽或资源。因此,Fast DDS中的DomainParticipants可以配置一个名为 fastdds.type_propagation 的属性,用于控制如何传播类型信息。
属性及其值
| PropertyPolicyQos 名称 | 描述 | 默认值 |
|---|---|---|
"fastdds.type_propagation" |
控制如何传播类型信息,可以取以下几种值: | "enabled" |
"disabled":禁用类型传播。 |
||
"enabled":启用完整和最小化的类型信息注册与发送。 |
||
"minimal_bandwidth":仅发送最小化的信息以节省带宽。 |
||
"registration_only":只注册完整和最小化的信息,不发送。 |
不同属性值对本地 DomainParticipant 的影响
| 值 | 类型对象注册 | 在EDP上发送类型信息 | 在EDP上接收类型信息 | 类型查找服务回复 |
|---|---|---|---|---|
| “disabled” | NO | NO | IGNORED | DISABLED |
| “enabled” | COMPLETE and MINIMAL | COMPLETE and MINIMAL | PROCESSED | ENABLED |
| “minimal_bandwidth” | MINIMAL only | MINIMAL only | Only MINIMAL PROCESSED | ENABLED |
| “registration_only” | COMPLETE and MINIMAL | COMPLETE and MINIMAL | IGNORED | DISABLED |
- disabled:禁止任何形式的类型传播,不会进行注册、发送或接收。
- enabled:允许完整和最小化的消息进行注册和传输,同时处理收到的信息。
- minimal_bandwidth:仅限于传输最小化的信息,适合需要节省带宽的场景。
- registration_only:虽然允许完整和最小化消息进行注册,但不参与具体的数据传输。
示例代码
下面是如何在C++代码中设置 fastdds.type_propagation 属性为“enabled”的示例:
DomainParticipantQos pqos;
pqos.properties().properties().emplace_back(
"fastdds.type_propagation",
"enabled");
通过这段代码,您可以确保本地DomainParticipant能够完全参与到远程数据结构的发现和交换中,这对于需要频繁交互的数据模型非常重要。
总结
本节强调了在Fast DDS中控制数据结构的传播方式的重要性。通过合理配置 fastdds.type_propagation 属性,可以灵活应对不同应用场景下的带宽和资源需求,实现高效的数据通信。这种灵活性使得开发人员能够根据实际情况选择合适的数据传播策略,从而优化系统性能。
内容由零声教学AI助手提供,问题来源于学员提问




