概述
事件处理框架为系统中事件的管理提供了一个简单而灵活的框架,提供本地事件和远程事件的处理功能。
事件处理框架的主要组件和描述见如下的uml图:
l 事件激发器是指产生各种类型事件的组件
l 事件消息是指包含事件源信息、事件类型、事件广播类型信息的组件
l 事件类型是指每个事件消息特定的消息类型比如安全数据变化事件,字典数据变化事件,指定了特定事件类型的事件消息能被所有监听该类型事件的监听器接收并处理。
l 事件监听器是指监听并且对监听到的各种事件消息进行处理的组件,根据监听的是本地还是远程事件消息,事件监听器可以分为本地事件监听器(只监听本地和在本地产生的本地远程事件)、本地远程事件监听器(监听本地和通过消息广播器发送的本地远程事件,远程消息)、远程事件监听器(只监听远程事件消息和本地远程消息);事件监听器在注册时,可以注册感兴趣的事件类型,如果注册了就只监听相应类型的事件,否则监听所有类型的事件。
l 事件处理器负责管理已经注册的各种类型的监听器,负责分发事件激发器激发的所有事件消息,如果是远程事件则在远程应用节点之间广播所有的远程事件。
l 事件消息广播器负责将远程事件和本地远程事件在集群/多实例应用中的所有应用中传播。
l 事件的远程广播通过jgroup控件来实现。
10.2事件传播原理
通过事件处理框架,我们可以在单个应用中传播事件,也可以在多个应用(这些应用可以部署在同一台服务器,也可以部署在多台物理服务器中)中传播事件。远程事件通过应用节点管理器来进行管理和传播。
应用节点管理器能够使多个独立的应用之间有效地通讯,也能使处于集群中的多个应用间进行可高的通讯,详细的介绍请参考集群框架介绍一节。
10.3 事件处理的流程
1. 将事件监听器注册到的事件处理器的监听器队列中
注册时可以指定监听的事件类型列表以及是监听本地事件还是远程事件。注册成功后监听器就开始监听由事件激发器发布的事件消息了。
2. 事件激发器构造不同类型的事件消息,指定事件消息的传播类型(事件消息的传播类型为本地事件、本地远程事件、远程事件),然后将构造好的事件消息发送给事件处理器,再由事件处理器将事件消息分发给相应的事件监听器和事件消息广播器。
3. 事件处理器分发新接收到的事件消息。本地事件只传递给本地事件监听器和本地远程事件传播器,不会通过消息广播器在多个应用节点间传播;本地远程事件除了传递给本地事件监听器外,还会通过消息广播器传递给多个应用节点上的本地远程事件监听器和远程监听器(也包括本地应用节点的远程本地事件监听器);远程事件通过事件消息广播器传递给远程事件监听器和本地远程事件监听器。
4. 事件监听器监听到与注册事件类型一致的事件消息时,对消息进行相应的处理。这样一个完整的事件处理过程就结束了。
10.4消息传播类型和消息监听器之间的接收关系表
|
本地消息
|
本地远程消息
|
远程消息
|
本地消息监听器
|
接收,只会接收一次
|
接收(只会接收1次)
|
不接收
|
本地远程消息监听器
|
接收,只会接收一次
|
从消息广播器接收(如果消息广播器不存在,则直接将远程消息发给本地的本地远程消息接收器),只会接收一次
|
从消息广播器接收(如果消息广播器不存在,则直接将远程消息发给本地的本地远程消息接收器)
|
远程消息监听器
|
不接收
|
从消息广播器接收(如果消息广播器不存在,则直接将远程消息发给本地的本地远程消息接收器),只会接收一次
|
从消息广播器接收接收(如果消息广播器不存在,则直接将远程消息发给本地的远程消息接收器),只会接收一次
|
- 大小: 18.7 KB
- 大小: 51.3 KB
分享到:
相关推荐
Java事件处理框架是Java GUI(图形用户界面)编程中的一个重要组成部分,它允许开发者创建响应用户交互的程序。在传统的GUI编程中,事件处理通常涉及直接将事件监听器绑定到特定的组件,这样的代码往往难以维护且...
总结来说,Libevent作为一个高性能事件处理框架,通过其高效、灵活的设计,为开发高性能网络服务和缓存系统提供了强大的工具。其事件驱动的编程模型、多平台支持以及对各种事件类型的处理,使其成为实现高并发、低...
EventProcessorFk是一个事件处理框架。它提供了一种简单、高效的方式来处理大量事件,并支持多种事件处理机制,包括单线程、多线程和分布式事件处理。 框架特点: 异步事件处理: 该框架支持异步事件处理,可以...
4. **可拓展性**:事件驱动架构支持异步事件处理,便于添加新的功能模块,提高系统的可扩展性。 文章中通过一个简单的按键控制LED灯的实验,对比了查询方式和中断方式以及事件驱动方式的实现。在查询方式下,CPU...
jCHEF - javaConnectedHandleEventFramework jCHEF 是一个免费且简单易用的 JAVA 程序事件处理框架。 您可以使用它来统一工作与来自不同来源的事件。 在为新数据源和目标创建连接器后,大部分配置只需调整 JSON 文件...
一个模拟 C# 委托和事件的非注解驱动的 Java 事件处理框架。 发布 Jar 下载 如何使用 第一步:为事件创建一个接口(以下只是一个例子,可以是任何接口) public interface IListener { public void ...
"GraphicsView框架事件处理"是其核心特性之一,涉及到视图(View)、场景(Scene)以及图形项(Graphics Items)之间的事件传播机制。 首先,我们要理解事件的基本概念。在Qt中,事件是程序运行过程中发生的一种...
一个良好的事件处理框架能够帮助开发者更好地组织代码,提高代码的可读性和可维护性。 基于这个标题和描述,我们可以推测这个框架的核心特性可能包括以下几个方面: 1. **组件化**:框架可能提供了一种方式来定义...
总的来说,这个按键处理框架提供了全面的按键事件管理,不仅覆盖了基本的单次点击,还支持长按和连续按键等多种交互方式,对于开发基于单片机的嵌入式系统来说是一份宝贵的资源。其可移植性和灵活性使得它能够适应...
TianOX是一个基于Web的桌面系统框架,目标是为类似... 事件处理框架 函数、数组、字符串、日期、二进制数据等工具库 一个GNSS接收机的应用例子:http://101.231.67.86:8501/。 标签:TianOX GUI开发框架
它不仅可以帮助运营商构建更为高效的通信网络安全风险评估和响应机制,还可以通过周期性事件处理框架和人机交互设计,提高网络安全事件处理的效率和准确性。未来随着大数据技术的不断发展,其在通信网络安全领域的...
2. **事件处理机制**:事件处理通常涉及事件的注册、分发和执行。事件被放入队列,然后由事件处理器按照优先级或时间顺序处理。 3. **任务调度**:在高负荷下保持实时性,可能需要一个任务调度器来决定哪个任务应该...
2. **事件调度器**:根据优先级或先进先出(FIFO)原则,从事件队列中取出事件并分发给对应的事件处理函数。这保证了高优先级事件能及时处理,同时也避免了多个事件同时处理的混乱情况。 3. **事件处理函数**:每个...
数据流处理框架是现代大数据处理的关键技术之一,它允许实时或近实时地处理源源不断的数据流。在本场景中,我们关注的是一个名为"data-stream"的特定框架,它基于Apache Flink构建,专为数据流处理提供了强大的调度...
大数据处理框架:Flink:FlinkCEP复杂事件处理.docx
它负责存储待处理的事件,确保事件按照一定的顺序被处理,防止因并发事件处理而导致的混乱。在“万能框架”中,每个事件都会被转化为一个消息对象,存入消息队列,然后由事件调度器(Event Dispatcher)按需分发给...
本文主要探讨的是基于事件通知服务的RFID(无线射频识别)数据处理框架,该框架旨在解决RFID技术在实时事件检测和与其他系统交互中的挑战。RFID技术是一种自动识别和数据获取技术,通过射频微波信号实现对目标物体的...
这篇讨论将深入探讨ONVIF事件处理框架,特别是基于WS-BaseNotification和WS-Topics的机制。 首先,WS-BaseNotification是Web服务中用于发布和订阅事件的基础协议。ONVIF事件处理框架的核心就是这一协议,它定义了一...
- **事件处理函数**:每个事件对应一个或多个处理函数,负责处理特定事件。 - **事件注册**:在系统启动时,将事件处理函数注册到事件调度器中。 - **事件触发**:在中断服务程序或正常程序流程中,通过调用调度器的...
通过利用同步事件和事件处理程序来减少类间依赖关系并解耦C++11代码。 与C#和Java等托管语言不同,C++是静态类型的,不支持反射或匿名委托,这使得事件系统稍微困难一些。本项目试图创建一个简单、轻量级的事件...