持久性策略(DURABILITY policy)控制数据写入器在发送给已知的订阅者后是否保留样本。这个策略适用于主题、数据读取器和数据写入器实体,通过它们各自QoS结构中的durability成员来控制。以下是与持久性QoS策略相关的IDL定义:
enum DurabilityQosPolicyKind {
VOLATILE_DURABILITY_QOS, // 最低持久性
TRANSIENT_LOCAL_DURABILITY_QOS,
TRANSIENT_DURABILITY_QOS,
PERSISTENT_DURABILITY_QOS // 最高持久性
};
struct DurabilityQosPolicy {
DurabilityQosPolicyKind kind;
};
默认情况下,kind被设置为VOLATILE_DURABILITY_QOS。
VOLATILE_DURABILITY_QOS表示样本在发送给所有已知订阅者后被丢弃。作为副作用,订阅者无法恢复在连接之前发送的样本。
TRANSIENT_LOCAL_DURABILITY_QOS表示与数据写入器相关/连接的数据读取器将接收到数据写入器历史上的所有样本。
TRANSIENT_DURABILITY_QOS表示样本会比数据写入器存在时间更长,并且只要进程存活,它们就会一直存在于内存中。这些样本被保留在内存中,但不会被持久化到永久存储。一个订阅了相同主题和分区的数据读取器将接收到属于相同主题/分区的所有缓存样本。
PERSISTENT_DURABILITY_QOS提供与瞬态持久性类似的功能,但缓存样本会被持久化并在进程重启后仍然存在。
当指定瞬态或持久性持久性时,DURABILITY_SERVICE QoS策略可以为持久性缓存指定额外的调整参数。
在创建数据写入器和数据读取器之间的关联时,会考虑持久性策略。为了创建关联,两端的值必须兼容。数据写入器的durability kind值必须大于等于数据读取器对应的值。durability kind值按照如下顺序排序:
PERSISTENT_DURABILITY_QOS > TRANSIENT_DURABILITY_QOS > TRANSIENT_LOCAL_DURABILITY_QOS > VOLATILE_DURABILITY_QOS
内容由零声教学AI助手提供,问题来源于学员提问