使用 Apache Geronimo 和 JMS 构建事件驱动的框架
2010-04-23 00:00:00 来源:WEB开发网使用类/接口层次结构过滤并路由事件
典型的消息传递系统允许消息订阅者根据点号分隔的字符串(如 travel.flights.seats 或 travel.lodging.rates )来定义将接收的事件类型。本文中给出的事件框架还允许订阅者订阅特定类型的事件;不过,该事件类型由 Java 类和接口的层次结构定义。
事件框架可以表示为点号分隔的消息类型层次结构,如 图 4 所示的类层次结构。
图 4. 事件应用程序类关系
根据此图表,订阅 Event 接口所代表的事件的事件接收者将接收所有事件,而订阅 FlightEvent 接口所代表的事件的事件接收者将只接收基于该接口或 FlightDelayed 类或 SeatAvailable 类的事件。此设计允许事件接收者一次订阅多个事件类型。例如,事件接收者通过使用参数 Event.class 调用事件通道的 subscribe() 方法,可以订阅所有事件。如果添加新的事件类型,则事件接收者会在它们发布时自动接收它们。
事件通道通过确定事件接收者订阅的事件接口的最具体的子类型,来处理事件层次结构。例如,清单 1 所示的 FlightDelayed 类实现了 FlightEvent 接口;因此,事件通道将首先查找 FlightDelayed 类的订阅者,然后查找 FlightEvent 接口等,一直沿着类/接口层次结构向上。
清单 1. FlightDelayed 类
class TravelEvent extends Event {}
class FlightEvent extends TravelEvent {}
class LodgingEvent extends TravelEvent {}
public class FlightDelayed
implements FlightEvent
{
private String message = "";
public FlightDelayed()
{
}
public FlightDelayed(String message)
{
this.message = message;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}
}
- ››使用linux中的quota教程
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››使用jxl生成带动态折线图的excel
- ››apache rewrite将指定URL转向指定的几个服务器
- ››使用mysql mysqldump进行数据库迁移
- ››使用jquery是新tab形式
- ››使用QUnit进行Javascript单元测试
- ››使用UITextFieldDelegate来隐藏键盘
- ››使用公式提取Excel中的日期后发现格式不对
- ››使用SQL Azure 的BI 解决方案
- ››使用PLSQL Developer工具导出sql文件
- ››使用双缓冲技术实现Android画板应用
更多精彩
赞助商链接