WEB开发网
开发学院软件开发Java 使用 Apache Geronimo 和 JMS 构建事件驱动的框架... 阅读

使用 Apache Geronimo 和 JMS 构建事件驱动的框架

 2010-04-23 00:00:00 来源:WEB开发网   
核心提示: 使用类/接口层次结构过滤并路由事件典型的消息传递系统允许消息订阅者根据点号分隔的字符串(如 travel.flights.seats 或 travel.lodging.rates )来定义将接收的事件类型,本文中给出的事件框架还允许订阅者订阅特定类型的事件;不过,使用 Apache Geroni

使用类/接口层次结构过滤并路由事件

典型的消息传递系统允许消息订阅者根据点号分隔的字符串(如 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; 
    } 
   } 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Apache Geronimo

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接