一种任务调度处理方法及系统技术方案

技术编号:9839383 阅读:112 留言:0更新日期:2014-04-02 02:47
本发明专利技术提供了一种任务调度处理方法,包括:从消息中间件接收申请任务消息,所述申请任务消息包括主题名称;当判断所述申请任务消息满足预置的过滤条件时,在数据库中查询该任务的执行状态,如果当前没有应用程序正在处理该任务,则指定目标应用程序执行本次任务,发布以所述主题名称为主题的任务执行消息到所述消息中间件。本发明专利技术还提供了一种任务调度处理系统。采用本发明专利技术的技术方案可避免在集群系统并发操作时产生数据重复的问题。

【技术实现步骤摘要】
【专利摘要】本专利技术提供了一种任务调度处理方法,包括:从消息中间件接收申请任务消息,所述申请任务消息包括主题名称;当判断所述申请任务消息满足预置的过滤条件时,在数据库中查询该任务的执行状态,如果当前没有应用程序正在处理该任务,则指定目标应用程序执行本次任务,发布以所述主题名称为主题的任务执行消息到所述消息中间件。本专利技术还提供了一种任务调度处理系统。采用本专利技术的技术方案可避免在集群系统并发操作时产生数据重复的问题。【专利说明】一种任务调度处理方法及系统
本专利技术涉及集群业务处理
,尤其涉及一种任务调度处理方法及系统。
技术介绍
随着企业级管理系统用户数量的不断增大,为满足管理系统的并发量,一般各个公司会采用硬件或软件集群的方式来部署系统。然而集群并不是线程安全的,集群系统并发时会产生诸如系统定时任务处理、关键数据重复等问题。虽然目前部分问题可通过各种“锁”的机制解决,但这种机制并不能完全解决上述问题。对于收单业务系统来说,收单业务中包含各种各样的单据号信息,比如交易流水号、商户号、终端号以及其他各类流程数据单号。这些单号都有严格的编码规则,并且在各自的领域中是唯一标识,一旦出现重复情况将对收单业务管理系统产生巨大的影响。
技术实现思路
本专利技术为解决上述问题,提出了一种任务调度处理方法及系统,通过将传统的任务执行过程拆分成两部分,解决系统集群部署产生的并发问题。在一个方面,本专利技术提供了一种任务调度处理方法,包括以下步骤:从消息中间件接收申请任务消息,申请任务消息包括主题名称;当判断申请任务消息满足预置的过滤条件时,在数据库中查询该任务的执行状态;如果当前没有应用程序正在执行该任务,则指定目标应用程序执行该任务,发布以该主题名称为主题的任务执行消息到消息中间件。在一个方面,本专利技术还提供了一种任务调度处理方法,包括以下步骤:对数据库中的定时任务的任务规则进行解析,得到该定时任务,该定时任务包括主题名称、执行时间和执行对象;当到达该执行时间时,从执行对象中指定应用程序作为目标应用程序,向消息中间件发布任务执行消息,该任务执行消息包括主题名称和目标应用程序。在另一个方面,本专利技术提供了一种任务调度处理系统,包括:消息接收器,用于从消息中间件接收申请任务消息,申请任务消息包括主题名称;消息过滤器,用于根据预置的过滤条件过滤申请任务消息;运算器,用于当申请任务消息通过消息过滤器时,在数据库中查询该任务的执行状态,如果当前没有应用程序正在执行该任务,则指定目标应用程序执行该任务;消息发布器,用于发布以该主题名称为主题的任务执行消息到消息中间件上。在另一方面,本专利技术还提供了一种任务调度处理系统,包括:规则解析器,用于对数据库中的定时任务的任务规则进行解析,得到定时任务,该定时任务包括主题名称、执行时间和执行对象;运算器,用于当到达执行时间时,从执行对象中指定应用程序作为目标应用程序;消息发布器,用于向消息中间件发布任务执行消息,该任务执行消息包括所述主题名称以及所述目标应用程序。本专利技术采用JMS机制的发布者/订阅者模式,通过将各个单号任务生成与单号任务实际执行两个步骤分开处理,经任务调度以后再确定实际执行任务的应用程序。采用本专利技术的技术方案可以避免在集群系统并发操作时产生数据重复的问题。【专利附图】【附图说明】下面将参照附图描述本专利技术的具体实施例,其中:图1示出了本专利技术实施例的任务调度处理方法的方法流程图;图2示出了本专利技术另一实施例的任务调度处理方法的方法流程图;图3示出了本专利技术实施例的任务调度处理系统的结构示意图;图4示出了本专利技术另一实施例的任务调度处理系统的结构示意图;图5示出了传统商户号生成任务的处理流程;图6示出了本专利技术实施例商户号生成任务的处理流程。【具体实施方式】为了使本专利技术的技术方案及优点更加清楚明白,以下结合附图对本专利技术的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本专利技术的一部分实施例,而不是所有实施例的穷举。为了解决系统集群部署时产生的并发问题,本专利技术实施例提出了一种任务分配调度处理方法及系统,是基于Java消息服务(JMS, Java Message Service)机制进行任务调度的处理。其中,Java消息服务(JMS,Java Message Service)是一个Java平台中关于面向消息中间件的应用程序编程接口(API, Application Programming Interface),它使得分布式系统的信息通信松散连接,发送信息的客户端只需要负责发送信息,接收信息的客户端只需要接收信息,两个客户端之间没有必要同时可用。JMS支持两种消息模式:一种是点对点模式,另一种是发布者/订阅者模式(publish/subscriber Messaging)。本专利技术实施例是基于发布者/订阅者模式提出的技术方案。发布者/订阅者模式用于多接收客户端方式,可能存在多个接收客户端并且接收客户端与发送客户端存在时间上的依赖,一个接收端只能接收自身创建以后发送客户端发送的信息。由于在实际应用中,任务发起可以由各个应用程序向任务调度处理系统发起,也可以由任务调度处理系统自行发起,由任务调度处理系统自行发起的一般为定时任务,解析得到该任务后到达预定时间自行发起任务。因此,针对不同的任务发起者本专利技术提出了一种任务调度处理方法及系统。对于各应用程序向任务调度处理系统申请任务的情况,本专利技术实施例提供了一种任务调度处理方法,图1示出了该任务调度处理方法的流程图,具体包括以下步骤:S101、从消息中间件接收申请任务消息,该申请任务消息中包括有主题名称。该任务是在系统初始化阶段对数据库中的任务规则进行解析得到的,解析后得到的任务可能包括:主题名称、消息方式、执行对象、执行时间等等。该数据库中包括有各个任务的任务规则以及各任务的执行状态,在任务规则方面定义了各个任务的指标参数信息,包括执行周期、实行时间和作业目标等等。在解析得到该任务后,向消息中间件注册这个任务消息。其他应用程序可以从消息中间件上订阅该任务消息,并将自身的唯一标识名称一同发布到消息中间件上。本专利技术实施例接收订阅任务的消息,从而在初始化阶段任务调度处理系统与各应用程序的任务连接关系,也即哪个应用程序订阅了哪个任务。当应用程序向消息中间件发起申请该任务消息时,消息中间件对该申请任务消息进行广播,本专利技术实施例从消息中间件接收该申请任务消息。S102、根据预先设置的过滤条件判断该申请任务消息是否满足过滤条件,如果不满足则终止;如果满足则执行下一步骤。本专利技术实施例过滤原理是根据Java的反射机制来判断传入的参数对象,参数对应的是字符串String类型,表达式为正则表达式。本专利技术实施例还可提供一个MessageSelector接口,用于满足用户复杂的需要编程的过滤条件。本专利技术实施例根据预设的过滤条件,判断该申请任务消息是否为本应用程序关注的内容,如果不是则终止;如果是本应用程序关注的内容则进行下一步骤。S103、在数据库中查询该任务的执行状态,判断是否有应用程序正在处理该任务,也即该任务的任务状态为执行中。如果有则等待上一个任务处理结束,如果没有,则执行下一步骤。S104、指定一个目标应用程序去执行本次任务,发起一个以该任务主题名称为主本文档来自技高网...
一种任务调度处理方法及系统

【技术保护点】
一种任务调度处理方法,其特征在于,包括以下步骤:从消息中间件接收申请任务消息,所述申请任务消息包括主题名称;当判断所述申请任务消息满足预置的过滤条件时,在数据库中查询所述任务的执行状态;如果当前没有应用程序正在执行所述任务,则指定目标应用程序执行所述任务,发布以所述主题名称为主题的任务执行消息到所述消息中间件。

【技术特征摘要】

【专利技术属性】
技术研发人员:周雪松项毅
申请(专利权)人:拉卡拉支付有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1