基于消息队列的业务控件化处理的方法及系统技术方案

技术编号:18083610 阅读:26 留言:0更新日期:2018-05-31 12:13
本发明专利技术涉及一种基于消息队列的业务控件化处理的方法,其包括以下步骤:S1:将业务分为一个或多个业务块;S2:业务监听器通过分析所述业务判定待处理的业务块;S3:根据业务块类型选择业务块处理器,以处理所述业务块;S4:判断所述业务块是否存在后续业务块;若存在,则将业务块消息发送至消息队列,并执行步骤S2;否则将由业务块处理器处理所述业务块获得的处理结果存储在数据库中;其中,所述业务块消息包括所述后续业务块的信息和所述处理结果。本发明专利技术还公开了一种基于消息队列的业务控件化处理的系统。

【技术实现步骤摘要】
基于消息队列的业务控件化处理的方法及系统
本专利技术涉及计算机网络
,尤其涉及基于消息队列的业务控件化处理的方法及系统。
技术介绍
在基于电子商务的业务中,多采用微服务的方式,一个业务可能会涉及到很多系统的调用,如果中间出现异常,则需要重新再运行一遍。这不仅影响效率,而且可能会重复执行某些数据库的插入操作,导致系统出现异常。目前有基于事件驱动的Actor模型,比如Akka,其中Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。采用Akka框架,消息发送的可靠性的保障,以及消息消费的防重机制略显复杂,不便于快速学习。并且,采用该方法还需要搭建一套全新的分布式环境,从而导致系统的维护成本较高。同时,Akka框架没有提供开源的消息监控界面,不利于从整体上把握系统的性能。
技术实现思路
有鉴于此,本专利技术提供一种基于消息队列的业务控件化处理的方法及系统,能够将一个业务细分为多个可复用的业务块,并为每个业务块定义一个业务块类型。根据业务块类型选择用于处理所述业务块的业务块处理器,通过发送消息的方式实现不同业务块之间的交互。为实现上述目的,根据本专利技术的一个方面,提供了一种基于消息队列的业务控件化处理的方法。本专利技术的方法包括以下步骤:S1:将业务分为一个或多个业务块;S2:业务监听器通过分析所述业务判定待处理的业务块;S3:根据业务块类型选择业务块处理器,以处理所述业务块;S4:判断所述业务块是否存在后续业务块;若存在,则将业务块消息发送至消息队列,并执行步骤S2;否则将由业务块处理器处理所述业务块获得的处理结果存储在数据库中;其中,所述业务块消息包括所述后续业务块的信息和所述处理结果。可选地,该方法还包括:在步骤S3之前,判断内存数据库中是否存在所述业务的标记信息;若存在,则结束;否则执行步骤S3,并将所述业务的标记信息存储在所述内存数据库中。可选地,该方法还包括:判断将业务块消息发送至消息队列是否成功;若不成功,则根据消息队列的重试机制将所述业务块消息发送至所述消息队列;若仍未成功,则将所述业务块消息发送至内存数据库;创建启动任务,并设置所述启动任务的启动时间;其中,所述启动任务为将内存数据库的任务队列中的业务块消息发送至消息队列。可选地,该方法还包括:判断在消费消息时是否出现异常;若出现异常,则将所述业务块消息发送至110异常处理队列中,并执行步骤S3;否则,执行步骤S4。可选地,该方法还包括:根据所述业务设置主题;在步骤S4中,将业务块消息发送至与所述主题相对应的消息队列,并且将所述业务块消息存储在所述主题下。可选地,设置所述内存数据库存储所述标记信息的时效,达到所述时效,删除所述内存数据库中存储的所述标记信息。根据本专利技术的另一方面,提供了一种基于消息队列的业务控件化处理的系统。本专利技术的系统包括:拆分模块,用于将业务分为一个或多个业务块;监听模块,用于通过分析所述业务判定待处理的业务块;处理模块,用于根据业务块类型选择业务块处理器,以处理所述业务块;后续业务块判断模块,用于判断所述业务块是否存在后续业务块;若存在,则将业务块消息发送至消息队列,并且所述监听模块通过分析所述业务判定待处理的业务块;否则将由处理模块处理所述业务块获得的处理结果存储在数据库中;其中,所述业务块消息包括所述后续业务块的信息和所述处理结果。可选地,该系统还包括标记信息判断模块,用于判断内存数据库中是否存在所述业务的标记信息,若存在,则结束;否则将所述业务的标记信息存储在所述内存数据库中,并且所述处理模块根据业务块类型选择业务块处理器,以处理所述业务块。可选地,该系统还包括业务块消息发送异常处理模块,用于判断将业务块消息发送至消息队列是否成功;若不成功,则根据消息队列的重试机制将所述业务块消息发送至所述消息队列;若仍未成功,则还将所述业务块消息发送至内存数据库;以及所述业务块消息发送异常处理模块还用于创建启动任务,并设置所述启动任务的启动时间;其中,所述启动任务为将内存数据库的任务队列中的业务块消息发送至消息队列。可选地,该系统还包括消费消息异常处理模块,用于判断在消费消息时是否出现异常;若出现异常,则将所述业务块消息发送至110异常处理队列中,并且所述处理模块根据业务块类型选择业务块处理器,以处理所述业务块;否则,所述后续业务块判断模块判断所述业务块是否存在后续业务块。可选地,该系统还包括主题设置模块,用于根据所述业务设置主题;以及后续业务块判断模块还用于将业务块消息发送至与所述主题相对应的消息队列,以便所述业务块消息存储在所述主题下。可选地,标记信息判断模块还用于设置述内存数据库存储所述标记信息的时效,达到所述时效,删除所述内存数据库中存储的所述标记信息。根据本专利技术的技术方案,通过通用的消息队列实现了业务控件化处理,将业务分为一个或多个业务块,提高了业务的复用性。在业务块运行过程中,会判断所述业务块是否存在后续业务块;若存在,则将业务块消息发送至消息队列。并且每个业务块发送异常时,通过消息队列自身的重试机制来处理,避免业务其它环节不必要的重试处理,进而提高了业务的容错性和运行效率。同时与其它的事件驱动模型相比,减少了系统的可维护性,并提高了系统的易用性。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的基于消息队列的业务控件化处理的方法主要步骤的示意图;图2是根据本专利技术实施例的基于消息队列的业务控件化处理的系统主要模块的示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本专利技术实施例的基于消息队列的业务控件化处理的方法主要步骤的示意图。如图1所示,本专利技术实施例的一种基于消息队列的业务控件化处理的方法的主要步骤包括:S11:将业务分为一个或多个业务块。将一个业务细分为多个可复用的业务块,并为每一个业务块定义一个业务块类型。定义业务块类型之后,监听器会根据业务块类型确定执行其对应的处理方法。S12:业务监听器通过分析业务判定待处理的业务块。业务监听器用来监听消息队列(MQ)中对应主题的消息,监听器会分析当前的业务,首先决定调用哪个起始的业务块。S13:根据业务块类型选择业务块处理器,以处理业务块。从简单工厂和策略模式中选择业务块对应的业务块处理器执行业务逻辑,其中,业务逻辑就是这个业务要具体执行的活动。但是,在业务块处理器处理业务块之前,判断内存数据库中是否存在业务的标记信息;若存在,则结束;否则执行步骤S13,并将业务的标记信息存储在内存数据库中。例如,在执行业务逻辑前,先在内存数据库中验证此业务块对应的业务ID是否曾经执行过,若已执行,则返回。若未执行,处理当前业务逻辑后,将当前业务ID存入内存数据库,以备防重,从而避免消息队列出现异常,重复消费消息。其中,还可设置内存数据库存储标记信息的时效,达到时效则删除内存数据库中存储的标记信息。内存数据库的防重数据会比较多本文档来自技高网...
基于消息队列的业务控件化处理的方法及系统

【技术保护点】
一种基于消息队列的业务控件化处理的方法,其特征在于,包括以下步骤:S1:将业务分为一个或多个业务块;S2:业务监听器通过分析所述业务判定待处理的业务块;S3:根据业务块类型选择业务块处理器,以处理所述业务块;S4:判断所述业务块是否存在后续业务块;若存在,则将业务块消息发送至消息队列,并执行步骤S2;否则将由业务块处理器处理所述业务块获得的处理结果存储在数据库中;其中,所述业务块消息包括所述后续业务块的信息和所述处理结果。

【技术特征摘要】
1.一种基于消息队列的业务控件化处理的方法,其特征在于,包括以下步骤:S1:将业务分为一个或多个业务块;S2:业务监听器通过分析所述业务判定待处理的业务块;S3:根据业务块类型选择业务块处理器,以处理所述业务块;S4:判断所述业务块是否存在后续业务块;若存在,则将业务块消息发送至消息队列,并执行步骤S2;否则将由业务块处理器处理所述业务块获得的处理结果存储在数据库中;其中,所述业务块消息包括所述后续业务块的信息和所述处理结果。2.根据权利要求1所述的方法,其特征在于,还包括:在步骤S3之前,判断内存数据库中是否存在所述业务的标记信息;若存在,则结束;否则执行步骤S3,并将所述业务的标记信息存储在所述内存数据库中。3.根据权利要求1所述的方法,其特征在于,还包括:判断将业务块消息发送至消息队列是否成功;若不成功,则根据消息队列的重试机制将所述业务块消息发送至所述消息队列;若仍未成功,则将所述业务块消息发送至内存数据库;创建启动任务,并设置所述启动任务的启动时间;其中,所述启动任务为将内存数据库的任务队列中的业务块消息发送至消息队列。4.根据权利要求1所述的方法,其特征在于,还包括:判断在消费消息时是否出现异常;若出现异常,则将所述业务块消息发送至110异常处理队列中,并执行步骤S3;否则,执行步骤S4。5.根据权利要求1所述的方法,其特征在于,还包括:根据所述业务设置主题;在步骤S4中,将业务块消息发送至与所述主题相对应的消息队列,并且将所述业务块消息存储在所述主题下。6.根据权利要求2所述的方法,其特征在于,设置所述内存数据库存储所述标记信息的时效,达到所述时效,删除所述内存数据库中存储的所述标记信息。7.一种基于消息队列的业务控件化处理的系统,其特征在于,包括:拆分模块,用于将业务分为一个或多个业务块;监听模块,用于通过分析所述业务判定待处理的业务块;处理模块,用于根据业务块类...

【专利技术属性】
技术研发人员:赵光伟
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1