一种基于linux的crontad和jar包实现定时校验数据源的方法与流程

文档序号:26589799发布日期:2021-09-10 20:32阅读:186来源:国知局
一种基于linux的crontad和jar包实现定时校验数据源的方法与流程

1.本发明涉及java应用与测试开发相关技术领域,尤其是指一种基于linux的crontad和jar包实现定时校验数据源的方法。


背景技术:

2.为了确保业务的正常,需要确保第三方数据源的数据的可靠性,而对于部分返回数据结构复杂且字段繁多的数据源,无法做到定期的去校验检查该数据源的字段或数据结构是否有变化。


技术实现要素:

3.本发明是为了克服现有技术中存在上述的不足,提供了一种能够定期检验检查的基于linux的crontad和jar包实现定时校验数据源的方法。
4.为了实现上述目的,本发明采用以下技术方案:一种基于linux的crontad和jar包实现定时校验数据源的方法,具体包括如下步骤:(1)配置执行shell脚本时所用到的命令,在linux系统/etc/profile配置java_home,在linux系统/root/.bash_profile配置java_home和命令的所在路径;(2)编辑linux系统中的/etc/crontab文件,设置定时任务,任务中包括执行shell脚本的时间,时间精确到分钟和所要执行的shell脚本的名称,以及执行shell脚本时产生日志的路径和文件名;(3)编写shell脚本,在shell脚本开头编写执行步骤(1)中的文件及命令,紧接着编写执行jar包的命令,并将所需的参数紧跟在执行jar包命令之后,其中多个参数中间用空格隔开;(4)jar包执行的时候默认执行的是jar包中的main方法,main方法所接收的参数是步骤(3)所输入的参数;(5)main方法根据参数将会去请求第三方获取数据源数据的接口,获取相应数据源的数据;(6)main方法在步骤(5)获取到数据后,会根据步骤(3)所传入的参数,路由到对应的数据校验的方法中;(7)数据源校验的方法中,首先根据预期的数据结构和传入的数据源进行比对,传入的数据源中存在预期的数据结构则将该条记录去掉;(8)验证关键字段的数据类型及数据范围,将关键字段按照相应的数据结构取出,然后校验取出字段的数据类型和数据范围,数据类型和数据范围不是符合预期的话,则将该字段记录下来;(9)判断步骤(7)和步骤(8)的记录中是否为空,不为空的话,发送消息到预警的群
中,发送的消息包括步骤(7)和步骤(8)中的记录;为空的话,不会发送消息。
5.该方法包括,每天定时去调用数据源验证的jar包,从而执行数据源验证的方法,jar包中包括从一开始的调用第三方的获取数据源数据的http的接口,再将获取到的数据源的数据路由到,相应的数据源验证方法中,该方法中首先根据数据源先进行提取数据结构,根据预期的数据结构和提取出的数据结构做对比,将预期的数据结构中存在,但是提取出的数据结构中不存在的数据结构记录下来,然后在根据数据源提取关键字段,进行关键字段的数据类型和数据有效范围做校验,若是不符合预期,则记录下来,最后通过钉钉将以上的记录发送到相应的群中。本发明致力于解决无法定期去校验检查,数据源返回的数据结构复杂且繁多的问题,通过本发明解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。
6.作为优选,在步骤(4)和步骤(5)中,通过传入的参数,定义了所需数据源的数据的时间和某个数据源,再通过http的get请求,请求第三方的数据源,获取到相应的时间的相应数据源的数据。
7.作为优选,在步骤(7)中,预期的数据结构和传入的数据源之间的对比涉及到以下步骤:(71)将json中有预期有效字段的key以“/”做为分隔编辑好其上下级关系,做为数据结构;(72)将预期有效字段的数据结构放到set数组中;(73)将获取到的数据源的数据用fastjson中的数据结构获取到该数据的数据结构的list数组;(74)将步骤(73)获取到的数据结构的list数组,转成set数组集合;(75)将步骤(72)的set数组去移除步骤(4)中的set数组集合。
8.作为优选,在步骤(8)中,用fastjson获取到关键字段的value的object用该objectinstanceof数据的类型,包括integer/double/string/long类型,是同一数据类型返回true,不是同一数据类型返回false,返回false的value对应的key记录在一个新的list集合中。
9.作为优选,在步骤(8)中,用fastjson获取到关键字段的value的object,先判断object的数据类型,是integer类型的则用integer的方法比较该value的数据范围,是double类型的则用double的方法比较该value的数据范围,在范围内的返回true,不在范围内的返回false,返回false的value对应的key记录在一个新的list集合中。
10.作为优选,在步骤(9)中,根据步骤(75)得到的数据结构的set数组集合放入到群消息发送的content中。
11.作为优选,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
12.作为优选,在步骤(9)中,根据步骤(8)得到数据类型不符合预期的key的list集合放入到群消息发送的content中。
13.作为优选,在步骤(9)中,根据得到的set数组集合,判断set是否为空,为空则不发送消息,不为空则发送消息。
14.作为优选,在步骤(9)中,根据得到的list集合,判断list是否为空,为空则不发送消息,不为空则发送消息。
15.本发明的有益效果是:解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。
附图说明
16.图1是本发明的方法流程图。
具体实施方式
17.下面结合附图和具体实施方式对本发明做进一步的描述。
18.如图1所述的实施例中,一种基于linux的crontad和jar包实现定时校验数据源的方法,具体包括如下步骤:(1)配置执行shell脚本时所用到的命令,在linux系统/etc/profile配置java_home,在linux系统/root/.bash_profile配置java_home和命令的所在路径;(2)编辑linux系统中的/etc/crontab文件,设置定时任务,任务中包括执行shell脚本的时间,时间精确到分钟和所要执行的shell脚本的名称,以及执行shell脚本时产生日志的路径和文件名;(3)编写shell脚本,在shell脚本开头编写执行步骤(1)中的文件及命令,紧接着编写执行jar包的命令,并将所需的参数紧跟在执行jar包命令之后,其中多个参数中间用空格隔开;(4)jar包执行的时候默认执行的是jar包中的main方法,main方法所接收的参数是步骤(3)所输入的参数;(5)main方法根据参数将会去请求第三方获取数据源数据的接口,获取相应数据源的数据;通过传入的参数,定义了所需数据源的数据的时间和某个数据源,再通过http的get请求,请求第三方的数据源,获取到相应的时间的相应数据源的数据;(6)main方法在步骤(5)获取到数据后,会根据步骤(3)所传入的参数,路由到对应的数据校验的方法中;(7)数据源校验的方法中,首先根据预期的数据结构(jsonpath)和传入的数据源(jsonpath)进行比对,传入的数据源中存在预期的数据结构(jsonpath)则将该条记录去掉;预期的数据结构和传入的数据源之间的对比涉及到以下步骤:(71)将json中有预期有效字段的key以“/”做为分隔编辑好其上下级关系,做为数据结构;(72)将预期有效字段的数据结构放到set数组中;(73)将获取到的数据源的数据用fastjson中的数据结构获取到该数据的数据结构的list数组;(74)将步骤(73)获取到的数据结构的list数组,转成set数组集合;(75)将步骤(72)的set数组去移除步骤(4)中的set数组集合;(8)验证关键字段的数据类型及数据范围,将关键字段按照相应的数据结构
(jsonpath)取出,然后校验取出字段的数据类型和数据范围,数据类型和数据范围不是符合预期的话,则将该字段记录下来;用fastjson获取到关键字段的value的object用该objectinstanceof数据的类型,包括integer/double/string/long类型,是同一数据类型返回true,不是同一数据类型返回false,返回false的value对应的key记录在一个新的list集合中;用fastjson获取到关键字段的value的object,先判断object的数据类型,是integer类型的则用integer的方法比较该value的数据范围,是double类型的则用double的方法比较该value的数据范围,在范围内的返回true,不在范围内的返回false,返回false的value对应的key记录在一个新的list集合中;(9)判断步骤(7)和步骤(8)的记录中是否为空,不为空的话,发送消息到预警的钉钉群中,发送的消息包括步骤(7)和步骤(8)中的记录;为空的话,不会发送消息;根据步骤(75)得到的数据结构的set数组集合放入到钉钉群消息发送的content中;根据步骤(8)得到数据类型不符合预期的key的list集合放入到钉钉群消息发送的content中;根据得到的set数组集合,判断set是否为空,为空则不发送消息,不为空则发送消息;根据得到的list集合,判断list是否为空,为空则不发送钉钉消息,不为空则发送钉钉消息。
19.简而言之,本方法主要为:配置linux系统的的定时任务crontab,在定时任务中配置所要执行的shell脚本;shell脚本中编写执行脚本的shell命令,调用jar包,并传入相应的参数;根据传入的参数去请求获取数据源数据的第三方接口,获取数据;数据传入对应的方法中;判断执行结果是否为空,为空的话则没有异常数据,不发送钉钉群消息,不为空的话则有异常数据,发送钉钉群消息。
20.该方法包括,每天定时去调用数据源验证的jar包,从而执行数据源验证的方法,jar包中包括从一开始的调用第三方的获取数据源数据的http的接口,再将获取到的数据源的数据路由到,相应的数据源验证方法中,该方法中首先根据数据源先进行提取数据结构,根据预期的数据结构和提取出的数据结构做对比,将预期的数据结构中存在,但是提取出的数据结构中不存在的数据结构记录下来,然后在根据数据源提取关键字段,进行关键字段的数据类型和数据有效范围做校验,若是不符合预期,则记录下来,最后通过钉钉将以上的记录发送到相应的群中。本发明致力于解决无法定期去校验检查,数据源返回的数据结构复杂且繁多的问题,通过本发明解决了对于数据源字段较多,且数据结构复杂的情况下,数据提供方对数据做修改的时候的校验及感知问题,且可以将有问题的数据通知到钉钉的群中,以便于通知相关用户可以及时的检查该数据源数据的变动。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1