开发数据同步服务时容易犯的错误

打印 上一主题 下一主题

主题 850|帖子 850|积分 2550

未判断是否乐成获取数据就进行下一步操作

问题形貌

在同步服务中,数据的获取通常是第一步,例如从数据库、API 或其他数据源中拉取数据。然而,开发者偶然会忽略对获取数据的有效性进行查抄,直接进入下一步操作(如更新数据或删除旧数据)。如果数据获取失败或返回空值,可能会导致后续操作异常,甚至引发数据丢失或系统瓦解。
典型案例1:同步海康视频列表

一个定时 job 必要天天从海康远程 API 获取视频列表数据,然后更新本地数据库。如果未查抄 API 返回的数据是否为空或是否符合预期格式,可能会导致以下问题:

  • 如果 API 返回空数据,步伐可能实验更新一个空对象,导致数据库中数据被覆盖为空。
  • 如果 API 返回异常数据(如格式错误),步伐可能抛出异常,影响同步流程。
具体代码

[code]        log.info("开头同步海康数据");        ArtemisConfig artemisConfig = GetArtemisConfigInfoConfigByKey();  //读取设置 hikconfig        HikRequest hikRequest = new HikRequest();        String first = hikRequest.SendCameras(1, 10, artemisConfig);        //log.info("获取总数据的内容是"+first);         JSONObject jsonObject = JSON.parseObject(first);        String code = jsonObject.getString("code");        if (code.equals("0")) {//判断能获取数据              //log.info("获取总数据乐成");            JSONObject data = jsonObject.getJSONObject("data");              Integer total = data.getInteger("total");            log.info("获取总数据是"+total);            Integer pageSize = 1000;            Integer totalPage = (total + pageSize - 1) / pageSize;            Integer pageNo = 1;            String connStr = param;            DataTemplate postgresqlDataTemplate = DatabaseUtil.getDataTemplate(DataSourceType.POSTGRESQL.toString(),                    connStr            );            while (pageNo
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表