基本

  • 消息驱动Bean(又称为MDB)只是另一个EJB,如无状态,有状态或单例。 使用@MessageDriven批注指定。
  • MDB用于异步消息处理
  • 它们无状态EJB 相似 ,因为它们都是由EJB容器池化
  • 但是,它们与无状态EJB不同,因为客户端无法直接访问 MDB。 只有容器会调用它们,以响应客户端发送到MDB正在侦听的端点的消息。

MDB的常用模式

  • MDB通常与JMS(Java消息服务API)一起使用
  • MDB配置为使用@ActivationConfigProperty侦听JMS目标,实现javax.jms.MessageListener接口,并在onMessage方法中提供业务逻辑(消息处理)
  • 组件将消息发送到JMS目标( 端点 )。 这不是一个同步过程(如上所述)。 消息触发方法立即返回,容器负责调用配置为侦听该特定JMS目标的MDB

基于JMS的MDB

MDB神话

  • MDB 属于JMS规范的一部分, 也不以任何方式与JMS 耦合 –这是一个误解。
  • MDB是池化的bean,可以以异步方式处理消息,并且可以侦听任何端点,包括JMS队列或目标 (最常见)。
  • 实际上,从EJB 2.1开始就是这种情况,并且通过JCA(Java连接器体系结构)规范可以实现

什么是JCA?

  • 在较高的层次上,JCA使Java EE服务器可以通过标准SPI与外部系统(例如旧版企业信息源等)进行交互(此处不处理复杂的JCA详细信息)
  • 可以使用JCA标准接口为特定系统构建资源适配器(RAR文件)
  • JCA为Java EE容器与外部系统之间的双向通信(入站和出站)提供合同-资源适配器本身需要实现该实现

礼貌:JCA规范文档

JCA如何实现通用MDB的概念?

  • JCA定义了MDB特定的功能
  • 就像在基于JMS的MDB中一样,基于JCA的MDB也需要实现一个接口并定义激活属性(两者都特定于JCA Resource Adapter实现)
  • 外部系统发送一条消息,资源适配器通过其入站JCA合同的实现接受该消息,并将该消息中继到内部端点(这又是特定于JCA适配器实现的)
  • 注册到此端点的MDB会在接收到的消息上执行业务逻辑

基于JCA的MDB

最终结果

外部系统使用标准接口(JCA)将消息发送到Java EE容器,而JCA实现则负责将其传递到适当的端点,该端点进一步将其传递给已注册的MDB

需要注意的是,由于EJB规范供应商必须支持基于JCA的MDB,因此它在Java EE服务器之间是完全可移植的

进一步阅读

  • JCA规范
  • JMS规范
  • EJB规范

翻译自: https://www.javacodegeeks.com/2015/01/mdb-jms-and-vice-versa.html

MDB!= JMS,反之亦然相关推荐

  1. .mdb_MDB!= JMS,反之亦然

    .mdb 基本 消息驱动Bean(又称为MDB)只是另一个EJB,例如无状态,有状态或单例. 使用@MessageDriven批注指定. MDB用于异步消息处理 它们类似于无状态EJB,因为它们都是由 ...

  2. jms mdb_MDB!= JMS,反之亦然

    jms mdb 基本 消息驱动Bean(又称为MDB)只是另一个EJB,例如无状态,有状态或单例. 使用@MessageDriven批注指定. MDB用于异步消息处理 它们与无状态EJB 相似 ,因为 ...

  3. EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P

    JMS:  1.jms是java的消息服务,jms的客户端之间可以通过jms服务进行异步的消息传输,jms支 持两种消息模型,Point--to--Point(P2P)和Publish/Subscri ...

  4. JMX, JMS, MDB of EJB

     JMX与webservice的区别 JMX监控,监视另一个系统的信息.两个系统之间可能在同一个端.webservice多用于远程信息交互. JMS与EJB的消息驱动Bean有何区别 JMS是Java ...

  5. java jms过时了么_JMS Message正在从Hibernate获取过时的数据

    我有一个托管实体,它附加了一个EntityListener . PostUpdate和PostPersist上的EntityListener将实体添加到JMS队列以进行更多处理 . 所以这是场景,我有 ...

  6. Java消息服务JMS详解

    2019独角兽企业重金招聘Python工程师标准>>> JMS: Java消息服务(Java Message Service) JMS是用于访问企业消息系统的开发商中立的API.企业 ...

  7. 《Spring 5 官方文档》26. JMS(二)

    26.4 接收消息 26.4.1 同步接收 虽然 JMS 通常与异步处理相关,但它也可以同步地消费消息.可重载的receive(..)方法提供了这个功能.在同步接收期间,调用线程阻塞,直到接收到消息. ...

  8. jboss5+EJB3+MDB Queue

    在使用jboss5进行MDB的试验时首先要在jboss5中配置jms 队列. 1)在jboss安装目录下:server\default\deploy\messaging 打开destinations- ...

  9. JMS分布式应用程序异步消息解决方案EhCache 高速缓存同步问题

    部分博客中描述的使用拦截器怎么用EJB公布的WebService加入缓存,这样能够提高WebService的响应效率.但是即使是这样做,还是要经历网络的传输的.于是决定在调用WebService的程序 ...

最新文章

  1. linux漏洞知乎_安装 Manjaro Linux 后必做的 6 件事 | Linux 中国
  2. 来吧,我教你画真正的流程图
  3. GDCM:gdcm::SplitMosaicFilter的测试程序
  4. 一个java类可以有_一个.java文件中可以有几个同级类?
  5. Randomatic mac - AE随机摆动的字母图层效果脚本
  6. 计算机刚开机时执行的是,电脑刚开机就提示自动关机该怎么办
  7. qt +ChartDirector 绘制图表
  8. 软件测试技术教程徐光侠,软件测试技术教程徐光侠韦庆杰第十二章节自动测试工具QTP的使用.ppt...
  9. 安卓客户端使用矢量图
  10. 新华三交换机基于MAC的vlan划分
  11. qiankun+vue项目开发
  12. 重拾英语-时态【转自鑫闻】
  13. 实例对比 Julia, R, Python,谁是狼语言?
  14. 港科夜闻|香港科大汪扬教授轻松访谈:对话西泽投资管理主席刘央女士,倾听她跌宕起伏的30年投资生涯...
  15. 【SLAM】2019浙大SLAM暑期学校--刘浩敏《集束调整》学习记录
  16. 12月编程语言排行榜公布啦~
  17. 深度思考: 如何做好一个开源项目?
  18. 人工智能与大数据行业的兴起,主要产生了哪些新的职位?
  19. 基于CORBA规范的中间件——CORBA基本原理
  20. C#读取DWG文件方法

热门文章

  1. JS浏览器加载一个页面的过程
  2. 2017蓝桥杯省赛---java---B---10(k倍区间)
  3. shell文本处理工具grep
  4. 如何兼容html在不同分辨力的问题,现代教育技术练习题
  5. rabbitmq-路由模式-routingkey
  6. 打印结果和调试结果不一样(C语言)
  7. jdk8 string::_JDK 12的String :: transform方法的简要但复杂的历史
  8. java 8 stream_Java 8 Stream示例
  9. java登录界面命令_Java命令行界面(第15部分):Jargo
  10. jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句