fastdds qos:DurabilityQosPolicy

假如DataWriter先起来,并且已经写了一些数据,之后有新的DataReader起来,那么新起来的DataReader能不能接收到它启动之前,DataWriter发布的数据呢。DurabilityQosPolicy用来做这种控制。

VOLATILE_DURABILITY_QOS:易失的,新上线的DataReader只能读取上线之后,DataWriter发布的数据。

TRANSIENT_LOCAL_DURABILITY_QOS:会在内存中保存数据,新上线的DataReader也能读取上线之前的数据,前提是DataWriter还在,如果这个时候DataWriter已经退出了,那么DataReader就无法获取到。

/*** Enum DurabilityQosPolicyKind_t, different kinds of durability for DurabilityQosPolicy.*/
typedef enum DurabilityQosPolicyKind : fastdds::rtps::octet
{/*** The Service does not need to keep any samples of data-instances on behalf of any DataReader that is not* known by the DataWriter at the time the instance is written. In other words the Service will only attempt* to provide the data to existing subscribers*/VOLATILE_DURABILITY_QOS,/*** For TRANSIENT_LOCAL, the service is only required to keep the data in the memory of the DataWriter that* wrote the data and the data is not required to survive the DataWriter.*/TRANSIENT_LOCAL_DURABILITY_QOS,/*** For TRANSIENT, the service is only required to keep the data in memory and not in permanent storage; but* the data is not tied to the lifecycle of the DataWriter and will, in general, survive it.*/TRANSIENT_DURABILITY_QOS,/*** Data is kept on permanent storage, so that they can outlive a system session.** @warning Not Supported*/PERSISTENT_DURABILITY_QOS
} DurabilityQosPolicyKind_t;

1hello world

仍然以fastdds自带的hello world做为例子进行测试。

默认情况下,qos类型为VOLATILE_DURABILITY_QOS,即易失的。如果直接像下边这样进行修改,不生效的,因为DurabilityQosPolicy的使用要同时结合HistoryQosPolicy和ResourceLimitsQosPolicy以及ReliabilityQosPolicy进行统一配置。

  • ReliabilityQosPolicyKind需要配置可靠类型
  • HistoryQosPolicy配置KEEP_LAST_HISTORY_QOS,则depth需要大于0;或者配置为KEEP_ALL_HISTORY_QOS
  • ResourceLimitsQosPolicy中ResourceLimitsQosPolicy不可小于HistoryQosPolicy中的depth

    DataWriterQos writer_qos = DATAWRITER_QOS_DEFAULT;
publisher_->get_default_datawriter_qos(writer_qos);

    auto max_samples = 500;
writer_qos.reliability().kind = ReliabilityQosPolicyKind::RELIABLE_RELIABILITY_QOS;
writer_qos.durability().kind = DurabilityQosPolicyKind::TRANSIENT_LOCAL_DURABILITY_QOS;
writer_qos.history().kind = HistoryQosPolicyKind::KEEP_LAST_HISTORY_QOS;
writer_qos.history().depth = max_samples;
writer_qos.resource_limits().ResourceLimitsQosPolicy= max_samples;
writer_qos.resource_limits().max_samples = writer_qos.resource_limits().max_instances * max_samples;
writer_ = publisher_->create_datawriter(topic_, writer_qos, this, StatusMask::all());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94143.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【读代码】SQLBot:开源自然语言转SQL智能助手原理与实践

一、项目简介 SQLBot 是 DataEase 团队开源的自然语言转 SQL 智能助手,致力于让非技术用户也能通过自然语言与数据库对话,自动生成 SQL 查询,实现自助数据分析、智能BI问答、报表生成等场景。SQLBot 结合了大语言模型(LLM)、数据库元数据解析、SQL解析与执行等多项技术,…

开题报告被退回?用《基于大数据的慢性肾病数据可视化分析系统》的Hadoop技术,一次通过不是梦

💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数…

HEVC(H.265)与HVC1的关系及区别

HEVC(H.265)与HVC1的关系及区别可归纳如下:一、技术定义差异‌HEVC(H.265)‌国际标准化组织制定的通用视频编码标准,由ITU-T和ISO/IEC联合开发‌1支持8K分辨率,压缩效率较H.264提升约50%‌1‌HV…

Java获取被nginx代理的emqx客户端真实ip

Java获取被nginx代理的emqx客户端真实ip 契机 ⚙ 使用nginx作为负载均衡(Load Balancing)的时候,发现真实ip无法获取。几经折腾终于拿到真实ip,又发现被代理的端口又无法使用非代理模式连接,由于之前暴露的docker端口有…

Jenkins自动化部署服务到Kubernetes环境

在现代软件开发中,持续集成和持续部署(CI/CD)已成为提高开发效率和软件质量的关键实践。本文将介绍如何使用Jenkins自动化部署服务到Kubernetes环境,并重点介绍Maven与私服的配置。 环境准备 在开始之前,请确保您已准备好以下环境: Jenkins服务器 Kubernetes集群 Docker镜…

OpenAI重新开源!gpt-oss-20b适配昇腾并上线魔乐社区

2025年8月5日,OpenAI发布了两款全新的开源权重语言模型,均为混合专家(MoE)架构,其规模设计可在消费级GPU和云端的多种硬件上高效运行。这些模型采用 Apache 2.0 许可协议,因此可用于蒸馏到其他推理模型中、…

SpringCloud入门(简洁明了)

目录 一.创建微服务项目 (一)环境准备 (二)项目结构图 (三)流程 二. Nacos (一)注册中心 1.服务注册 2.服务发现 3.编写微服务API 4.远程调用基本实现 5.负载均衡 6.LoadBalanced注解式注解均衡 7.注册中心宕机,远程调用还能成功吗 (二)配置中心 1.基…

集成算法学习笔记

一、集成算法简介1. 核心思想类比“多个专家综合判断优于单个专家”,通过构建并结合多个个体学习器,提升模型的泛化能力(降低过拟合风险、提高预测准确性),完成复杂的学习任务。2. 个体学习器与结合模块个体学习器&…

让Chrome信任自签名证书

让Chrome信任自签名证书(Unix系列OS) 背景 想在本地测试自己写的基于HTTPS连接的Web应用,跑在3001端口。但使用Chrome浏览器访问https://localhost:3001时显示连接不安全。解决了但没解决 使用mkcert一键创建证书: mkcert localho…

[江科大库]基于 OpenMV 的矩形识别与 STM32 串口通信(电子设计大赛实用教程)

🎯 基于 OpenMV 的矩形识别与 STM32 串口通信(电子设计大赛实用教程) 一、前言 在本科生电子设计大赛中,经常会遇到图像识别相关的任务,例如: 识别 矩形框(如识别一个 A4 纸、黑色标记框等); 将识别结果传输到 STM32 单片机,用于后续控制(舵机、移动小车、机械臂…

人脸识别驱动的工厂人体属性检测与预警机制

人体属性检测:人脸识别智慧检测驱动的工厂管理革新(所有图片均为真实项目案例)在制造业数字化转型浪潮中,人体属性检测技术已成为破解传统工厂管理难题的核心工具。通过融合人脸识别智慧检测、目标检测算法与多模态数据分析&#…

数据工程师——ETL

ETL面试题01 一、基础概念与理论类 1. 请解释什么是 ETL?它在数据处理流程中扮演什么角色? 答:ETL就是数据抽取、转化、加载。目的是将分散的数据源集中在一起进行处理分析。 数据抽取:是指各种数据源中抽取数据,包括关系型数据库(MySQL、Oracle等)、日志文件、Exce…

Oracle APEX 经典报表中的Checkbox

目录 1. 建表&投入测试数据 2. 经典报表做成 2-1. 画面布局如下​编辑 2-2. 报表使用的SQL 2-3. RS列的Heading设定 2-4. Function and Global Variable Declaration 2-5. Execute when Page Loads 2-6. Process 3. 运行效果​编辑 1. 建表&投入…

Codeforces Round 1043 (Div.3)

比赛连接:Codeforces Round 1043 (Div.3) A. Homework 题目链接:A - Homework Vlad and Dima have been assigned a task in school for their English class. They were given two strings aaa and bbb and asked to append all characters from bbb …

GPS欺骗式干扰的产生

我们在GNSS抗干扰天线的选型、测试方法以及为什么不能做RTK?(抗干扰内容全集)中提到的抗干扰天线,针对的是GPS压制式干扰。对于GPS欺骗式干扰,抗干扰天线是无能为力的。 简单来说,压制式干扰是通过发射强功…

[PV]AXI R/W/RW带宽计算的tcl脚本

AXI R/W/RW带宽计算的tcl脚本 我基于前述的axi_read_bw_per_id.tcl脚本进行了修改,使其支持: 读通道(Read Channel):计算基于rvalid && rready的有效周期(已在前述实现)。 写通道(Write Channel):计算基于wvalid && wready的有效周期,考虑wstrb的ac…

阿里云AnalyticDB同步数据至华为云taurusdb

1 概述 AnalyticDB和taurusdb都是高度兼容mysql协议的数据库,从现有的AnalyticDB官方数据同步方案来看,只有FlinkSQL合适。 同步方案官方文档: https://help.aliyun.com/zh/analyticdb/analyticdb-for-mysql/user-guide/flink-subscribes-b…

学习嵌入式之驱动——系统移植(二)

一、uboot常用命令与环境变量1.命令:(1)环境变量操作命令命令功能格式printenv 查看环境变量printenvsetenv新建/修改环境变量setenv 环境变量名 环境变量值saveenv保存环境变量saveenv(2)内存操作命令命令功能格式示例…

EasyExcel 合并单元格最佳实践:基于注解的自动合并与样式控制

EasyExcel 合并单元格最佳实践:基于注解的自动合并与样式控制 前言 在日常开发中,我们经常需要导出 Excel 报表,而合并单元格是提升报表可读性的常见需求。本文将介绍如何基于 EasyExcel 实现智能的单元格合并功能,通过自定义注解…

Unity设置UI显示区域

系列文章目录 untiy工具 文章目录 系列文章目录 👉前言 👉一、效果图 👉二、制作过程(检测中心点位置) 👉2-1、代码实现 👉三、优化为检测整个UI四个角点 👉四、性能优化建议 👉壁纸分享 👉总结 👉前言 思路: 获取屏幕的宽度和高度,定义中间区域的范围…