开发数据同步服务时容易犯的错误
未判断是否乐成获取数据就进行下一步操作问题形貌
在同步服务中,数据的获取通常是第一步,例如从数据库、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]