可靠性(RELIABILITY)策略适用于主题(topic)、数据读取器(data reader)和数据写入器(data writer)实体,通过它们各自QoS结构中的reliability成员来控制。以下是与可靠性QoS策略相关的IDL定义:
enum ReliabilityQosPolicyKind {
BEST_EFFORT_RELIABILITY_QOS,
RELIABLE_RELIABILITY_QOS
};
struct ReliabilityQosPolicy {
ReliabilityQosPolicyKind kind;
Duration_t max_blocking_time;
};
该策略控制数据读取器和写入器处理其处理的数据样本的方式。“best effort”值(BEST_EFFORT_RELIABILITY_QOS)不保证样本的可靠性,在某些情况下可能会丢弃样本。“reliable”值(RELIABLE_RELIABILITY_QOS)表示服务应最终将所有值传递给合格的数据读取器。
当历史(history)QoS策略设置为“keep all”,并且由于资源限制而导致写入器无法继续时,该策略中的max_blocking_time成员被使用。当出现这种情况并且写入器阻塞时间超过指定时间时,写操作将失败并返回超时错误码。
对于数据读取器和主题,默认情况下该策略为“best effort”,而对于数据写入器,默认值为“reliable”。
在创建数据写入器和数据读取器之间的关联时,将考虑该策略。为了创建关联,关联的两端的值必须是兼容的。数据写入器的可靠性种类必须大于或等于数据读取器的值。
内容由零声教学AI助手提供,问题来源于学员提问