1.本发明涉及智能门禁管理系统领域,尤其涉及一种命令重试方法、系统、设备及存储介质。
背景技术:2.目前,智能门禁系统包括软件和硬件两部分,系统的授权信息、硬件参数信息是通过软件系统输入,转换为一系列命令后再下发到硬件设备,这个过程是异步过程,在异步过程中任何一个环节出现错误,都会影响软件和硬件数据的一致性,导致软件和硬件数据无法匹配,出现门禁系统无法正常工作的情况。
技术实现要素:3.为了克服现有技术的不足,本发明的目的之一在于提供一种命令重试方法,对下发失败的命令进行重试,进而提高软件和硬件数据的一致性。
4.本发明的目的之二在于提供一种命令重试系统,提高软硬件数据最终一致性。
5.本发明的目的之三在于提供一种智能门禁控制器,执行上述命令重试方法。
6.本发明的目的之四在于提供一种存储介质,执行上述命令重试方法。
7.本发明的目的之一采用如下技术方案实现:
8.一种命令重试方法,应用在门禁系统中,包括:
9.获取下发失败的命令,将下发失败的命令进行时间排序;
10.依次对每个下发失败的命令进行校验,判断命令是否满足重试条件,并对满足重试条件的命令重新下发。
11.进一步地,所述获取下发失败的命令的方法为:
12.定时查询并获取数据库中存储的下发失败的命令以及获取缓冲中已执行过的命令;其中,所述数据库设有失败命令缓冲区,用于存储已生成但下发失败的命令。
13.进一步地,所述获取下发失败的命令后,还包括:
14.判断下发失败的命令是否是格式化命令,若下发失败的命令为格式化命令且该命令后面有目标相同的其他命令,则放弃该格式化命令,并将其移动至已执行表中;若下发失败的命令不是格式化命令,则继续执行重试操作;
15.判断下发失败的命令是否有标识字段相同的命令,若有,则将具有相同标识字段的命令进行合并;若无,则继续执行重试操作。
16.进一步地,判断命令是否满足重试条件的方法为:
17.根据命令下发时间判断命令是否过期;
18.判断命令是否达到了预设的重试的间隔时间;
19.判断命令是否为格式化命令或与其他命令具有相同的标识字段;
20.判断命令是否为待重试状态;
21.若判断得出命令为有效命令、命令达到了重试的间隔时间、与清空设备的命令不
相同、与其他命令不存在相同的标识字段且命令处于待重试状态才符合重试条件;若不满足任意一条件,则放弃本次重试操作,并保留下发失败的命令在数据库中的记录。
22.进一步地,对满足重试条件的命令重新下发的方法为:
23.将满足重试条件的命令加入至消息队列中,按照消息队列的队列顺序依次将消息队列中的命令进行下发。
24.进一步地,将消息队列中的命令进行下发之前,还包括:
25.按照设备类型和业务类型对命令进行打包,将打包后的命令进行统一下发。
26.进一步地,将消息队列中的命令进行下发时,还包括:
27.将命令状态更新为正在下发状态,并将其命令状态进行反馈和显示。
28.本发明的目的之二采用如下技术方案实现:
29.一种命令重试系统,执行如上述的命令重试方法,包括:
30.命令下发线程,用于接收和下发命令,并在命令下发失败时将失败命令存储至失败命令缓冲区中;
31.消息重试线程,用于获取失败命令缓冲区中的失败命令,判断失败命令是否符合重试条件;
32.消息队列,用于存放正常命令以及满足重试条件的失败命令,并按照队列顺序下发消息队列中的命令。
33.本发明的目的之三采用如下技术方案实现:
34.一种智能门禁控制器,其包括处理器、存储器及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的命令重试方法。
35.本发明的目的之四采用如下技术方案实现:
36.一种存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述的命令重试方法。
37.相比现有技术,本发明的有益效果在于:
38.本发明对下发失败的命令进行重试条件判断,让满足重试条件的命令重新下发,可以提高软硬件数据最终的一致性;将本发明的命令重试方法应用在门禁系统领域,将该方法嵌入到门禁核心服务的命令下发流程中,保证门禁软件的授权信息与门禁控制器的信息保持最终一致性,降低门禁系统运行的出错率。
附图说明
39.图1为本发明命令重试的方法示意图;
40.图2为本发明命令重试方法的整体流程示意图。
具体实施方式
41.下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
42.实施例一
43.本实施例提供一种命令重试方法,将该命令重试方法应用在门禁系统中,可提高门禁软件的授权信息与门禁控制器的信息保持最终一致性。
44.如图1、图2所示,本发明的命令重试方法具体包括如下步骤:
45.步骤s1:获取下发失败的命令,将下发失败的命令进行时间排序;
46.步骤s2:依次对每个下发失败的命令进行校验,判断命令是否满足重试条件,并对满足重试条件的命令重新下发。
47.门禁系统中可将通过软件系统输入的授权信息、硬件参数信息生成一系列命令,将已生成的命令会加入至待下发表中,命令下发线程会将待下发表中的命令依次下发至门禁系统的硬件设备,即下发至门禁控制器中进行一系列验证工作;当下发失败时,将已生成但未下发成功的命令会存储在数据库中,所述数据库中设有失败命令缓冲区,用于存储已生成但下发失败的命令。
48.本实施例中通过消息重试线程获取下发失败的命令,其中下发失败的命令主要分为缓冲中已执行过的命令以及数据库中历史记录中下发失败的命令。对于已执行过的命令,可直接将其进行放弃,对于未执行过的下发失败的命令,则需进行重试操作。
49.获取下发失败的命令可通过定时查询的方式来获取,定时获取缓冲中已执行过的命令,以及定时查询并获取数据库中存储的下发失败的命令,以确保命令获取的及时性。
50.由于门禁控制器在正常使用前会进行格式化操作,目的是为了将门禁控制器里已有的所有数据删除,重设为初始值以供新用户使用;因此,在获取下发失败的命令后,还需对下发失败的命令进行格式化判断,判断下发失败的命令是否为格式化命令,若是,则需要将该命令放弃。
51.由于格式化命令有其独有的命令类型,因此,本实施例通过判断命令的命令类型从而获知该命令是否为格式化命令,当判断得出下发失败的命令为格式化命令且该命令后面有目标相同的其他命令后,放弃该格式化命令,并将该格式化命令的状态改为放弃,并移至已执行表中;若下发失败的命令不是格式化命令,则继续执行重试操作。
52.与此同时,由于不同门禁客户端可能会操作同样的授权信息,导致产生对应不同设备的相同命令,因此在进行格式化命令判断后,还需判断下发失败的命令是否与其他命令相冲突,即判断下发失败的命令中是否有dataid相同的命令,若有,则将相同dataid的命令进行合并以减少命令传输量;若无,则继续执行重试操作。
53.经过上述的处理后已将格式化命令删除,且将相同的命令进行合并后,再对剩下的未下发成功的命令进行重试条件的判断,本实施例中判断命令是否满足重试条件,需要进行下述五个条件的判断,其五个条件分别为:
54.1.判断命令是否过期;由于系统配置命令时下发的过期时长默认为24小时,因此在进行命令期限判断时根据命令的下发时间判断其下发时间距今是否超过24小时,若超过,则代表该命令已过期,若未超过,则代表该命令未过期,仍处于有效状态。
55.2.判断命令是否达到了预设的重试的间隔时间;本实施例中预设的重试间隔是按照二次曲线的间隔时间来算的,如第一次间隔5秒,第二次间隔22*5秒,依次类推。
56.3.判断命令是否为清空设备的命令或与其他命令具有相同的标识字段;其中判断命令是否为清空设备的命令,相当于重新判断当前命令是否为格式化命令,若是格式化命令,则代表该命令对应的设备经过格式化操作,即为清空设备,此时即可将该命令进行放
弃;而判断命令是否与其他命令具有相同的标识字段,即重新判断是否有与其dataid相同的命令,若有,则将具有相同的标识字段的命令进行合并。
57.4.判断命令是否为待重试状态。
58.5.判断目标设备是否在线,即判断门禁控制器是否在线;而判断目标设备是否在线的方法可通过心跳包的方式判断目标设备接收到心跳包时是否做出对应的响应,若做出对应响应,则表示目标设备在线,若连续多次未取得响应,则判定目标设备不在线。
59.若判断得出命令为有效命令、命令达到了重试的间隔时间、与清空设备的命令不相同、与其他命令不存在相同的标识字段、命令对应的目标设备处于在线状态以及命令处于待重试状态时才符合重试条件;若任意一条件未满足,则放弃本次重试操作,并保留下发失败的命令在数据库中的记录。
60.本实施例中将满足重试条件的命令加入至消息队列中,按照消息队列的队列顺序依次将消息队列中的命令进行下发;并将消息队列中的命令进行下发之前,还可按照设备类型和业务类型对命令进行打包,将打包后的命令进行统一下发,减少命令传输次数;与此同时,还将命令状态更新为正在下发状态,并将其命令状态进行反馈和显示。
61.本实施例将重试成功的命令进行下发,并将下发成功的命令移入已下发表中,使得软硬件数据尽可能的保持一致;不满足重试条件或放弃重试的命令依然记录在数据库中以重复上述重试过程实现再次命令重试操作,但对于重试失败达到预设次数的命令会进行舍弃,以平衡系统性能。
62.实施例二
63.本实施例提供一种命令重试系统,执行如实施例一所述的命令重试方法,命令重试系统主要包括三个部分,分别是命令下发线程、消息队列和消息重试线程;其中命令下发线程用于接收和下发命令,并在命令下发失败时将失败命令存储至失败命令缓冲区中;消息重试线程则用于获取失败命令缓冲区中的失败命令,判断失败命令是否符合重试条件;消息队列用于存放正常命令以及满足重试条件的失败命令,并按照队列顺序下发消息队列中的命令。
64.实施例三
65.本实施例提供一种智能门禁控制器,其包括处理器、存储器及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一中的命令重试方法;另外,本实施例还提供一种存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述的命令重试方法。
66.本实施例中的设备及存储介质与前述实施例中的方法是基于同一发明构思下的两个方面,在前面已经对方法实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的系统的结构及实施过程,为了说明书的简洁,在此就不再赘述。
67.上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。