第 4 章 消息驱动 Beans
4.1. 消息驱动 Beans 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
消息驱动型 Bean(MDB)为应用程序开发提供事件驱动的模型。MDB 的方法不注入或从客户端代码调用,而是由接收来自 Jakarta 消息传递服务器等消息传递服务的消息触发。Jakarta EE 规范要求支持 Jakarta 消息传递,但也支持其他消息传递系统。
MDB 是一种特殊的无状态会话 Bean。它们实施名为 onMessage(Message 消息) 的方法。当 MDB 正在侦听的 Jakarta 消息目的地收到消息时,会触发此方法。也就是说,MDB 是由从 Jakarta 消息传递提供商接收消息触发的,这与无状态会话 Bean 不同,其中方法通常由 Jakarta 企业 Bean 客户端调用。
MDB 异步处理消息.默认情况下,每个 MDB 最多可以有 16 个会话,每个会话处理一个消息。没有消息顺序保证。若要实现消息排序,需要将 MDB 的会话池限制为 1。
示例:管理CLI命令将会话池 设置为 1:
/subsystem=ejb3/strict-max-bean-instance-pool=mdb-strict-max-pool:write-attribute(name=derive-size,value=undefined) /subsystem=ejb3/strict-max-bean-instance-pool=mdb-strict-max-pool:write-attribute(name=max-pool-size,value=1) reload
/subsystem=ejb3/strict-max-bean-instance-pool=mdb-strict-max-pool:write-attribute(name=derive-size,value=undefined)
/subsystem=ejb3/strict-max-bean-instance-pool=mdb-strict-max-pool:write-attribute(name=max-pool-size,value=1)
reload