Alan's Blog

导航

消息驱动Bean(Message Driven Bean)

定义:消息驱动是专门用来处理基于消息请求的组件。

消息模型:点对点消息传递和发布/订阅消息传递

点对点消息传递模型:一条信息只能传递给一个队列接收方

发布/订阅消息传递:一条消息可以由多个接收者接收

详细解析:首先它是无状态的Session Bean,客户端调用MDB时,无需等待,可以立即返回,MDB会异步处理客户的请求;MDB必须实现MessageListener接口,当容器守候检测到一条队列信息时,将调用onMessage()方法。

适用范围:当一个业务执行很长,然后又无需将结果实时反馈客户时,适合使用MDB;如订单成功后向客户发送一条成功短信或者一封邮件。

Queue消息:(PTP消息传递模型)通过注解可以描述消息驱动的属性相关信息:

@MessageDriven(activationConfig =

 {

   @ActivationConfigProperty(propertyName="destinationType",

    propertyValue="javax.jms.Queue"),

   @ActivationConfigProperty(propertyName="destination",

    propertyValue="queue/fashanshop"),

})

详解:@MessageDriven指明这是一个消息驱动,@ActivationConfigProperty注释配置信息的各种属性,destinationType指定消息类型为Queue队列,destination指定消息的路径;一旦队列到达指定的路径,则会触发onMessage方法,消息将作为参数传入。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Topic消息:(Pub/sub消息传递模型)通过注解可以描述消息驱动的属性相关信息:

@MessageDriven(activationConfig =

 {

   @ActivationConfigProperty(propertyName="destinationType",

    propertyValue="javax.jms.Topic"),

   @ActivationConfigProperty(propertyName="destination",

    propertyValue="top/student"),

})

详解:@MessageDriven指明这是一个消息驱动,@ActivationConfigProperty注释配置信息的各种属性,destinationType指定消息类型为Topic队列,destination指定消息的路径;一旦队列到达指定的路径,则会触发onMessage方法,消息将作为参数传入。

总结创建JMS的步骤:

  • 查找JMS提供者(找到工厂)
  • 创建JMS连接(创建连接)
  • 创建JMS Session(创建session对象)
  • 查找JMS目的地(借助JNDI查找JMS目的地)
  • 创建JMS生产者或消费者(借助session和destination对象,客户能获得消息的生产者和消费者)
  • 发送或接收消息(构建消息,借助生产者发送,消费者接收)

 

posted on 2012-01-29 11:06  Alan's Blog  阅读(2685)  评论(0编辑  收藏  举报