快速业务通道

Java事件处理模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
三者,当有外部事件进来,通过 调用Slector.select方法可以获得外部事件,从而进行处理,可参考我的本栏文章。

监控式事件模式适合使用在触发性质的场合,比如数据库后端触发器 界面触发 I/O触发 状态改变触发等。

我们以一个信件触发为例,这其实是个Observer应用例子:

比如用户提请服务器计算一个数据,如果用户同时要求将计算结果向自己信箱发一封,那么我们看如何设计?按照通常思维,这是一个次序问题,先在内存中计算数据,然后将结果发送到他的信箱,最后返回结果到用户端,我们知道信件的发送是耗时的,因此,有可能网络的原因造成信件发送很慢,这是用户就一直等不到他的计算结果,很显然,我们使用监控式事件模式来解决,让发信的事件由监控者去完成,只要需要时触发就可以了:

public class Computer extends Observable{ public Computer(){ //将sendMailObserver设定为本类的观察者。 addObserver(new sendMailObserver()); } ....... public void compute(String input,boolean needEmail,String email){ //计算操作 ......... if (needEmail){ //设置变化点 setChanged(); //如果需要发送email,我们把email地址作为参数传送过去 notifyObservers(email); } } }

我们再来看监控观察者代码是如何写的?

public class sendMailObserver implements Observer{ public void update(Observable obj,Object email){ if (email instanceof String){ sendMail(email); } } }

这样服务器在执行compute方法时,就没有发送邮件的等待,一直接继续执行。

监控式事件模式和事件直接驱动模式可以在一个系统一起使用,外界信号通过事件直接驱动模式启动系统处理模块, 系统处理模块处理过程中,可以通过监控式事件模式来触发其它后台任务。这样一个架构非常适合实时处理系统。

既然事件处理模式是众多应用系统的基本模式,那么应该可以形成一个框架标准,JMX的notification Model就是这样一个架构设计。

Java事件处理模式(3)

时间:2010-12-23

JMX 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号