事件处理框架

简介: 概述 事件处理框架为系统中事件的管理提供了一个简单而灵活的框架,提供本地事件和远程事件的处理功能。 事件处理框架的主要组件和描述见如下的uml图:    l         事件激发器是指产生各种类型事件的组件 l         事件消息是指包含事件源信息、事件类型、事件广播类型信息的组件 l         事件类型是指每个事件消息特定的消息类型比如安全数据变化事件,字典数据变化事件,指定了特定事件类型的事件消息能被所有监听该类型事件的监听器接收并处理。

概述

事件处理框架为系统中事件的管理提供了一个简单而灵活的框架,提供本地事件和远程事件的处理功能。

事件处理框架的主要组件和描述见如下的uml图:



  

l         事件激发器是指产生各种类型事件的组件

l         事件消息是指包含事件源信息、事件类型、事件广播类型信息的组件

l         事件类型是指每个事件消息特定的消息类型比如安全数据变化事件,字典数据变化事件,指定了特定事件类型的事件消息能被所有监听该类型事件的监听器接收并处理。

l         事件监听器是指监听并且对监听到的各种事件消息进行处理的组件,根据监听的是本地还是远程事件消息,事件监听器可以分为本地事件监听器(只监听本地和在本地产生的本地远程事件)、本地远程事件监听器(监听本地和通过消息广播器发送的本地远程事件,远程消息)、远程事件监听器(只监听远程事件消息和本地远程消息);事件监听器在注册时,可以注册感兴趣的事件类型,如果注册了就只监听相应类型的事件,否则监听所有类型的事件。

l         事件处理器负责管理已经注册的各种类型的监听器,负责分发事件激发器激发的所有事件消息,如果是远程事件则在远程应用节点之间广播所有的远程事件。

l         事件消息广播器负责将远程事件和本地远程事件在集群/多实例应用中的所有应用中传播。

l         事件的远程广播通过jgroup控件来实现。

10.2事件传播原理

通过事件处理框架,我们可以在单个应用中传播事件,也可以在多个应用(这些应用可以部署在同一台服务器,也可以部署在多台物理服务器中)中传播事件。远程事件通过应用节点管理器来进行管理和传播。

应用节点管理器能够使多个独立的应用之间有效地通讯,也能使处于集群中的多个应用间进行可高的通讯,详细的介绍请参考集群框架介绍一节。



 

 

10.3 事件处理的流程

1.         将事件监听器注册到的事件处理器的监听器队列中

注册时可以指定监听的事件类型列表以及是监听本地事件还是远程事件。注册成功后监听器就开始监听由事件激发器发布的事件消息了。

2.         事件激发器构造不同类型的事件消息,指定事件消息的传播类型(事件消息的传播类型为本地事件、本地远程事件、远程事件),然后将构造好的事件消息发送给事件处理器,再由事件处理器将事件消息分发给相应的事件监听器和事件消息广播器。

3.  事件处理器分发新接收到的事件消息。本地事件只传递给本地事件监听器和本地远程事件传播器,不会通过消息广播器在多个应用节点间传播;本地远程事件除了传递给本地事件监听器外,还会通过消息广播器传递给多个应用节点上的本地远程事件监听器和远程监听器(也包括本地应用节点的远程本地事件监听器);远程事件通过事件消息广播器传递给远程事件监听器和本地远程事件监听器。

4.  事件监听器监听到与注册事件类型一致的事件消息时,对消息进行相应的处理。这样一个完整的事件处理过程就结束了。

10.4消息传播类型和消息监听器之间的接收关系表

 

本地消息

本地远程消息

远程消息

本地消息监听器

接收,只会接收一次

接收(只会接收1次)

不接收

本地远程消息监听器

接收,只会接收一次

从消息广播器接收(如果消息广播器不存在,则直接将远程消息发给本地的本地远程消息接收器),只会接收一次

从消息广播器接收(如果消息广播器不存在,则直接将远程消息发给本地的本地远程消息接收器)

远程消息监听器

不接收

从消息广播器接收(如果消息广播器不存在,则直接将远程消息发给本地的本地远程消息接收器),只会接收一次

从消息广播器接收接收(如果消息广播器不存在,则直接将远程消息发给本地的远程消息接收器),只会接收一次

目录
相关文章
|
3月前
|
JavaScript 前端开发
事件处理机制
【9月更文挑战第02天】
58 9
|
3月前
|
前端开发 JavaScript
React的事件与原生事件的执行顺序?
React的事件与原生事件的执行顺序?
|
6月前
|
数据采集 JavaScript 前端开发
理解并应用:JavaScript响应式编程与事件驱动编程的差异
了解JavaScript的响应式编程与事件驱动编程至关重要。事件驱动编程基于事件触发函数执行,如用户交互或系统事件。响应式编程则关注数据流变化,利用Observables自动响应更新。在爬虫代理IP的Web Scraping示例中,两者分别通过axios和rxjs显示了数据抓取的不同处理方式。掌握这两者能提升异步操作的效率和代码质量。
理解并应用:JavaScript响应式编程与事件驱动编程的差异
|
7月前
|
消息中间件 存储 设计模式
JavaScript发布订阅模式:实现事件驱动编程!
JavaScript发布订阅模式:实现事件驱动编程!
|
7月前
|
JavaScript 前端开发 编译器
方法事件处理器
方法事件处理器
|
7月前
|
前端开发 JavaScript UED
React事件和原生事件的执行顺序
React事件和原生事件的执行顺序
75 0
|
JavaScript 前端开发
37Vue - 事件处理器(方法事件处理器)
37Vue - 事件处理器(方法事件处理器)
37 0
|
数据库连接
Yii2.0框架中如何进行事件处理?它支持哪些事件?
Yii2.0框架中如何进行事件处理?它支持哪些事件?
203 0
|
IDE 开发工具 Android开发
使用rxjava创建一个rxbus事件处理框架
RxJava已经出现很多个年头了,但是依然被很多公司使用,如果现在还对RxJava了解的不够透彻, 可以看这个系列对它的分析:相信看完后你对它会有个更全面的认识。 这个系列主要从下面几个方面来讲解: **RxJava基本操作符使用** **RxJava响应式编程是如何实现的** **RxJava的背压机制及Flowable是如何实现背压的** **RxJava的线程切换原理
|
JavaScript
事件处理
事件处理
140 0