一种异步化事件驱动的MessageEngine框架制造技术

技术编号:36605325 阅读:14 留言:0更新日期:2023-02-04 18:26
本发明专利技术公开了一种异步化事件驱动的MessageEngine框架,由消息循环组件、消息循环进程管理组件和消息泵组件组成,当框架内部的组件初始化完成后,进入监听线程,当有消息请求进来时,框架会判断是事件还是任务,如果是任务则调用任务处理标准接口进行处理,如果是事件则走事件处理的相关逻辑,利用消息泵组件无限循环的监听线程,不停地监听处理事件和任务,直到外部控制框架停止为止,调用MessagePump.Delegate接口分别处理即时消息、延时消息和闲时消息。解决了异步化事件驱动框架采用单线程异步模型难以充分利用计算机CPU资源和缺少全面的消息通知监控和采集统计机制,难以支撑系统的平稳运行的技术问题。难以支撑系统的平稳运行的技术问题。难以支撑系统的平稳运行的技术问题。

【技术实现步骤摘要】
一种异步化事件驱动的MessageEngine框架


[0001]本专利技术涉及网络通信
,尤其涉及一种异步化事件驱动的MessageEngine框架。

技术介绍

[0002]事件驱动模型设计是当前解决大型系统业务逻辑交互错综复杂进而导致的系统功能业务耦合性强、扩展性差、响应速度慢的热门解决方案,对于构建高性能、高并发和高扩展的大型系统具有重要意义。
[0003]现有的基于java语言开发的异步化事件驱动框架是基于单线程异步的事件驱动模型,在使用组件的过程中,仅有一个事件监听器线程,在现代多核计算机中无法充分利用计算机核心资源,也没有提供足够全面的消息通知监控和采集统计机制,难以支撑系统的平稳运行。

技术实现思路

[0004]本专利技术提供了一种异步化事件驱动的MessageEngine框架,用于解决现有的异步化事件驱动框架采用单线程的异步模型,难以充分利用计算机CPU资源和缺少全面的消息通知监控和采集统计机制,难以支撑系统的平稳运行的技术问题。
[0005]有鉴于此,本专利技术中提供了一种异步化事件驱动的MessageEngine框架,包括消息循环组件MessageLoop、消息循环进程管理组件MessageLoopRunner和消息泵组件MessagePump;
[0006]消息循环进程管理组件MessageLoopRunner,用于在接收到到外部消息时,根据消息属性将消息发布给事件处理组件EventRunner或任务处理组件TaskRunner,其中,消息属性为事件或任务;
[0007]任务处理组件TaskRunner,用于判断消息的执行时机,若立即执行则将消息放入即时执行任务池,否则,将消息放入暂存执行任务池中等待调度;
[0008]事件处理组件EventRunner,用于对消息进行数据处理,将数据处理后的消息传输至MessageLoopDefault组件;
[0009]MessageLoopDefault组件,用于在接收到消息后,判断当前消息时间点是否处于可运行状态,若是,则将消息推送至即时队列,唤醒消息泵组件MessagePump执行消息内容,否则,将消息推送至延时队列或闲时队列;
[0010]消息泵组件MessagePump,用于调用MessagePump.Delegate接口的doWork、doDelayedWork和doIdleWork方法分别处理即时消息、延时消息和闲时消息;
[0011]消息循环组件MessageLoop内部包含事件回调处理器MessageCallback和监控处理器MetricHandler;
[0012]MessageCallback用于定义事件触发回调时的执行逻辑,MetricHandler用于定义事件执行异常时对应的异常处理逻辑。
[0013]可选地,每组消息循环组件MessageLoop、消息循环进程管理组件MessageLoopRunner和消息泵组件MessagePump为MessageEngine框架的一个子模块,每个子模块通过内部的子总线与MessageEngine框架的父总线进行子模块之间的消息传递。
[0014]可选地,MessageCallback定义的事件触发回调时的执行逻辑为:
[0015]在事件触发回调时,调用处理器链工厂FlowProcessFactory,FlowProcessFactory调用根据预先植入的PreAwareProcess进行前置处理,校验MessageCallback物料的来源是否合规,若物料不合规则打回,若物料合规,则调用树形批次处理器TreeBatchProcess;
[0016]树形批次处理器TreeBatchProcess内部提供SingleSplitProcess处理器、BatchSaveProcess处理器和BatchExcelProcess处理器,其中,SingleSplitProcess处理器用于将聚合数据拆分为单条分别进行业务处理,当完成所有业务逻辑处理后,树形批次处理器TreeBatchProcess调用BatchSaveProcess处理器批量保存,若在业务处理过程中有不合规的数据,则树形批次处理器TreeBatchProcess将不合规的数据推送到BatchExcelProcess处理器,由BatchExcelProcess处理器批量将业务数据导出到Excel中,当所有业务都执行完之后,处理器链工厂FlowProcessFactory调用后置行为处理器AfterAwareProcess根据执行结果进行数据处理。
[0017]可选地,MetricHandler包括三个核心应用程序接口,分别为:notify接口、consumer接口和error接口。
[0018]可选地,MessageEngine框架通过parent函数建立子总线和父总线的关联关系。
[0019]从以上技术方案可以看出,本专利技术提供的异步化事件驱动的MessageEngine框架具有以下优点:
[0020]本专利技术提供的异步化事件驱动的MessageEngine框架,由消息循环组件MessageLoop、消息循环进程管理组件MessageLoopRunner和消息泵组件MessagePump组成,当MessageEngine框架内部的组件初始化完成后,进入监听线程,此时如果有消息请求进来,MessageEngine框架会判断是事件还是任务,如果是任务则调用TaskRunner标准接口进行处理,如果是事件则走EventRunner的相关逻辑,MessagePump中有一个无限循环的监听线程,不停地监听处理事件和任务,直到外部控制框架停止为止,MessagePump调用MessagePump.Delegate接口的doWork、doDelayedWork和doIdleWork方法分别处理即时消息、延时消息和闲时消息。本专利技术提供的异步化事件驱动的MessageEngine框架支持多个线程绑定多个MessageLoop组件实例,在多个线程中开启多路循环监听,充分发挥现代多核计算机的CPU资源,解决了现有的异步化事件驱动框架采用单线程的异步模型,难以充分利用计算机CPU资源和缺少全面的消息通知监控和采集统计机制,难以支撑系统的平稳运行的技术问题。
[0021]同时,本专利技术提供的异步化事件驱动的MessageEngine框架不仅提供异步事件发布与订阅,而且实现了对异步任务操作的支持,即能够处理的消息源类型既包括事件,也包括任务,解决了现有框架/组件功能单一的问题。
[0022]本专利技术提供的异步化事件驱动的MessageEngine框架每个子模块也有属于自己的事件总线,不同子模块间既可以使用自身的事件总线来监听处理业务,也可以在当事件满足指定条件时触发notifyParaent方法来将事件分发至父总线,这样便可实现不同子模块
间的交互,实现更具复杂性的业务场景。
[0023]本专利技术提供的异步化事件驱动的MessageE本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种异步化事件驱动的MessageEngine框架,其特征在于,包括消息循环组件MessageLoop、消息循环进程管理组件MessageLoopRunner和消息泵组件MessagePump;消息循环进程管理组件MessageLoopRunner,用于在接收到到外部消息时,根据消息属性将消息发布给事件处理组件EventRunner或任务处理组件TaskRunner,其中,消息属性为事件或任务;任务处理组件TaskRunner,用于判断消息的执行时机,若立即执行则将消息放入即时执行任务池,否则,将消息放入暂存执行任务池中等待调度;事件处理组件EventRunner,用于对消息进行数据处理,将数据处理后的消息传输至MessageLoopDefault组件;MessageLoopDefault组件,用于在接收到消息后,判断当前消息时间点是否处于可运行状态,若是,则将消息推送至即时队列,唤醒消息泵组件MessagePump执行消息内容,否则,将消息推送至延时队列或闲时队列;消息泵组件MessagePump,用于调用MessagePump.Delegate接口的doWork、doDelayedWork和doIdleWork方法分别处理即时消息、延时消息和闲时消息;消息循环组件MessageLoop内部包含事件回调处理器MessageCallback和监控处理器MetricHandler;MessageCallback用于定义事件触发回调时的执行逻辑,MetricHandler用于定义事件执行异常时对应的异常处理逻辑。2.根据权利要求1所述的异步化事件驱动的MessageEngine框架,其特征在于,每组消息循环组件MessageLoop、消息循环进程管理组件MessageLoopRunner和消息泵组件MessagePump为MessageEngine框架的一个子模块,每个子模块通过内部的子总线与MessageEngine框...

【专利技术属性】
技术研发人员:陈增楷李述昊
申请(专利权)人:广州钛动科技有限公司
类型:发明
国别省市:

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

1