关于消息驱动 Bean

另请参见

消息驱动 Bean 是一种企业 Bean,通过该 Bean,J2EE 应用程序可以异步处理消息。该 Bean 用作 Java 消息服务 (Java Message Service, JMS) 消息侦听程序,此消息侦听程序类似于事件侦听程序,不同的是消息驱动 Bean 接收消息而不是事件。消息可以由任何 J2EE 组件(应用程序客户端、其他企业 Bean 或 Web 组件)发送。

为什么使用消息驱动 Bean?

消息驱动 Bean 是构建异步企业应用程序的解决方案,在该应用程序中,当有消息进入时才开始执行处理。通过此方法,可实现企业应用程序模块间的松散耦合。在发送者(即创建者)将消息发送到 JMS 管理的对象(主题或队列)时,便会启动进程。

与会话 Bean 和实体 Bean 的比较

与会话 Bean 和实体 Bean 不同,消息驱动 Bean 的客户端不直接对其进行访问。消息驱动 Bean 只有一个 Bean 类。

在某些方面,消息驱动 Bean 类似于无状态会话 Bean:

消息驱动 Bean 实例的实例变量可以维护客户端消息处理过程中的状态信息,如对企业 Bean 对象的对象引用。

消息处理

当消息到达时,容器将调用消息驱动 Bean 的 onMessage 方法来处理此消息。onMessage 方法通常将消息强制转换为五个 JMS 消息类型之一,然后根据应用程序的业务逻辑处理此消息。onMessage 方法可能会调用帮助程序方法,或者调用会话 Bean 或实体 Bean 来处理消息中的信息,然后可能会将结果存储在数据库中。

很多消息驱动 Bean 类的实例可以并行执行,从而能够并行处理消息流。因为无法保证以准确的顺序将消息传送到这些实例,所以必须准备使用消息驱动 Bean 来处理序列以外的消息。例如,取消保留的消息会在确认保留的消息之前被传送。

事务

容器为消息驱动 Bean 实例提供了 MessageDrivenContext,这样,Bean 实例便可访问由容器为其维护的上下文。根据 Bean 是管理其自身的事务还是依赖容器的事务管理,它可以访问 MessageDrivenContext 的不同方法以处理事务。

另请参见
发送 JMS 消息
关于实体 Bean
关于会话 Bean
创建企业 Bean
关于 Business 方法

法律声明