瑞星 发表于 昨天 12:32

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

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

问题形貌

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

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

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

      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
页: [1]
查看完整版本: 开发数据同步服务时容易犯的错误