ZBLOG

7. Persistence Service Using default QoS, the DataWriter history is only available for DataReader throughout the DataWriter’s life. This means that the history does not persist between DataWriter initializations and therefore it is on an empty st...

7. 持久性服务概述

在默认的 QoS 设置下,DataWriter 的历史记录仅在其生命周期内对 DataReader 可用。这意味着在 DataWriter 初始化之间,历史记录并不会持久化,因此每次创建 DataWriter 时都会处于空状态。同样,DataReader 的历史记录也不会持续到其生命周期结束,因此在创建 DataReader 时也是空的。然而,eProsima Fast DDS 提供了将 DataWriter 的历史记录存储到持久数据库中的可能性,以便 DataWriter 在创建时能够从中加载其历史记录。此外,还可以配置 DataReaders 将最后通知的更改存储在数据库中,以便它们在创建时能够恢复其状态。

这种机制允许在启动数据分发服务时恢复先前的状态,从而为应用程序增加了鲁棒性,例如,在意外关闭的情况下。通过配置持久性服务,DataWriters 和 DataReaders 可以从关闭发生时的状态重新开始操作。

注意:请注意,DataReaders 并不将其历史存储到数据库中,而只是将来自 DataWriter 的最后通知更改存储。这意味着它们将在离开的地方恢复操作,但不会拥有之前的信息,因为这些信息已经通知给应用程序。

7.1 配置

持久性服务的配置是通过设置适当的 DurabilityQosPolicy 来完成,并指定每个实体(DomainParticipant、DataWriter 或 DataReader)的 PropertyPolicyQos 适当属性。

要使持久性服务有效,DurabilityQosPolicyKind 必须设置为 TRANSIENT_DURABILITY_QOSPERSISTENT_DURABILITY_QOS

必须为使用该属性 dds.persistence.guid 的实体设置一个持久性标识符(Guid_t)。此标识符用于从数据库加载适当的数据,同时还用于在重启之间同步 DataWriter 和 DataReader。GUID 由16字节组成,分为两组:

  • 前12字节对应于 GuidPrefix_t
  • 后4字节对应于 EntityId_t

持久性标识符以一串12个用点分隔的字节表示,这些字节采用十六进制格式,然后是垂直线分隔符(|)和另外4个用点分隔的字节,也以十六进制格式表示(见示例)。有关选择适合 DataReader 和 DataWriter 的 GUID,请参考 RTPS 标准(第9.3.1节:全局唯一标识符 (GUID))。

如果未指定 dds.persistence.guid,则耐用行为将回退为 TRANSIENT_LOCAL_DURABILITY_QOS

必须配置一个持久性插件来管理数据库,通过属性 dds.persistence.plugin 指定(参见 PERSISTENCE: SQLIITE3 内置插件)。

7.2 PERSISTENCE:SQLITE3 内置插件

此插件通过使用 SQLite3 API 提供对本地数据库文件的持久化。要激活该插件,需要将 dds.persistence.plugin 属性添加到 DomainParticipant、DataWriter 或 DataReader 的 PropertyPolicyQos 中,其值为 builtin.SQLITE3。此外,还必须将 dds.persistence.sqlite3.filename 属性添加到实体 PropertyPolicyQos 中,以指定数据库文件名。这些属性总结如下表:

属性名称 属性值
dds.persistence.plugin builtin.SQLITE3
dds.persistence.sqlite3.filename 用于持久存储的文件名。默认值:persistence.db

注意:为了避免由于并发访问 SQLite3 数据库而造成的不必要延迟,建议为每个 DataWriter 和 DataReader 指定不同的数据库文件。

重要:DomainParticipant 的 PropertyPolicyQos 中设置的插件仅在不存在或无效的数据写入者/数据读取者中有效。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7274

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?