3.1.2.1.2. DestinationOrderQosPolicy
警告
此 QoS 策略将在未来版本中实现。
概述
多个数据写入器(DataWriters)可以使用相同的键在同一主题下发送消息,并且在数据读取器(DataReader)端,所有这些消息都存储在同一个数据实例中(参见 DestinationOrderQosPolicy)。该 QoS 策略控制确定这些消息的逻辑顺序的标准。系统的行为取决于 DestinationOrderQosPolicyKind
的值。
QoS 策略数据成员列表
数据成员名称 | 类型 | 默认值 |
---|---|---|
kind | DestinationOrderQosPolicyKind | BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS |
注意:此 QoS 策略适用于主题、数据读取器和数据写入器实体。它不能在启用的实体上更改。
警告
为了使数据写入器和数据读取器匹配,它们必须遵循兼容性规则。有关详细信息,请参见兼容性规则部分。
DestinationOrderQosPolicyKind
有两种可能的值(见 DestinationOrderQosPolicyKind):
BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS:这表示根据每个 DataReader 的接收时间对数据进行排序,这意味着最后接收到的值应该被保留。这种选项可能导致每个 DataReader 最终拥有不同的最终值,因为 DataReaders 可能以不同的时间接收数据。
BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS:这表示根据消息发送时的数据写入器时间戳对数据进行排序。这种选项保证了最终值的一致性。
这两种选项都依赖于 OwnershipQosPolicy 和 OwnershipStrengthQosPolicy 的值,这意味着如果 Ownership 设置为 EXCLUSIVE 且最后一个值来自具有低所有权强度的数据写入器,则该值将被丢弃。
兼容性规则
为了维护 DestinationOrderQosPolicy
在具有不同 kind 值的数据读取器和数据写入器之间的兼容性,数据写入器的 kind 必须大于或等于数据读取器的 kind。不同 kinds 之间的顺序为:
- BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS < BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
可能组合的表格
DataWriter kind | DataReader kind | 兼容性 |
---|---|---|
BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS | BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS | 是 |
BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS | BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS | 否 |
BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS | BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS | 是 |
BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS | BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS | 是 |
总结
通过配置 DestinationOrderQosPolicy
,可以有效地管理多个数据写入者发送到同一主题下的数据流,同时保持消息顺序一致或基于接收时间。如果正确应用这些策略和规则,可以确保系统的一致性与性能优化。在设计系统时,需要特别关注各个组件间兼容性的需求,以避免潜在的不匹配问题。
内容由零声教学AI助手提供,问题来源于学员提问