Java事件处理模式 - 编程入门网
三者,当有外部事件进来,通过 调用Slector.select方法可以获得外部事件,从而进行处理,可参考我的本栏文章。
监控式事件模式适合使用在触发性质的场合,比如数据库后端触发器 界面触发 I/O触发 状态改变触发等。 我们以一个信件触发为例,这其实是个Observer应用例子: 比如用户提请服务器计算一个数据,如果用户同时要求将计算结果向自己信箱发一封,那么我们看如何设计?按照通常思维,这是一个次序问题,先在内存中计算数据,然后将结果发送到他的信箱,最后返回结果到用户端,我们知道信件的发送是耗时的,因此,有可能网络的原因造成信件发送很慢,这是用户就一直等不到他的计算结果,很显然,我们使用监控式事件模式来解决,让发信的事件由监控者去完成,只要需要时触发就可以了:
我们再来看监控观察者代码是如何写的?
这样服务器在执行compute方法时,就没有发送邮件的等待,一直接继续执行。 监控式事件模式和事件直接驱动模式可以在一个系统一起使用,外界信号通过事件直接驱动模式启动系统处理模块, 系统处理模块处理过程中,可以通过监控式事件模式来触发其它后台任务。这样一个架构非常适合实时处理系统。 既然事件处理模式是众多应用系统的基本模式,那么应该可以形成一个框架标准,JMX的notification Model就是这样一个架构设计。 Java事件处理模式(3)时间:2010-12-23JMX Notification Model 我们知道,JMX是提供了一种对MBean资源执行控制和配置的管理机制,但这只是复杂的,分布式的系统中的一部分, 还有需要资源能够感应状态改变或者特定事件变化的机制,这就是JMX Notification Model。 在JMX Notification Model中均可以实现"事件直接驱动模式"和"监控式事件模式",这取决于你的应用需求。 JMX Notification Model允许MBean通过调用notifications广播事件,接受者只要注册为一个listerner, JMX的 MBean notification model 将会激活这个listerner注册一次,然后将一直接受到 来自广播者发出的各种事件。 事件模式有三个角色,第一个是事件发出者producer 然后是事件接受者Consumer,第三个 是要传输的事件。JMX notification model也是这样分别依靠下列组件来实现这三个角色: A. NotificationBroadcaster接口, 事件广播发出者, 这个接口允许监听者在需要发出的notification中注册他们感兴趣的事件。 B. 通用事件(Notification),这是我们要传输的事件。 Notification事件能被直接使用,也能成为子类,这些都依赖于随同事件传输的信息。 通过使用通用事件类型,监听者将能接受来自广播者所有类型的事件。 C. NotificationListener接口, 事件监听者或者接受者, 用于接受来自广播者的任何notification信号。 D. NotificationFilter接口, 这个接口为notification的监听者提供一个对发出事件的过滤器。 E. NotificationEmitter 接口, 扩展了NotificationBroadcaster接口,当删除监听者时允许更多的控制功能。 只要是MBean,就既可以成为notification的发布广播者,也可以成为notification的监听者接受者,或 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |