jms mdb

基本

  • 消息驱动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

jms mdb

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

  1. 【JMS】JMS详解

    一.JMS介绍 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或者在分布式系统中发 ...

  2. 【Java.JMS】JMS基础

    JMS基本概念 JMS 是 SUN 公司开发的一套访问 MOM(Message-Oriented-Middleware) 消息服务中间件的标准 API. MOM 提供消息接收和转发的服务,对消息进行缓 ...

  3. JMS之——JMS简介

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/68962304 jms即Java消息服务(Java Message Service) ...

  4. 【JMS】JMS支持的模式讲解

    介绍 JMS,Java消息服务应用程序接口,全程为Java Message Service,是一个Java平台中关于面向消息中间件的API框架,用在两个应用程序之间或分布式系统中发送消息,整体的功能有 ...

  5. 深入浅出JMS(一)–JMS基本概念(转载)

    摘要:The Java Message Service (JMS) API is a messaging standard that allows application components bas ...

  6. 框架面试题(maven、ZooKeeper、Dubbo、Nginx、Redis、Lucene、Solr、ActiveMQ、JMS

    什么是 Maven? Maven 使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建, 报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管 ...

  7. 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例

    转载:http://blog.csdn.net/jiuqiyuliang/article/details/48758203 第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模 ...

  8. JMS Java消息服务(Java Message Service)

    JMS 在一些场景下RPC的同步方式可能不太适合业务逻辑的处理,并且这种方式在某些场景下会导致业务的紧耦合. 基于异步交互模型的JMS解决了RPC产生的紧耦合问题,它提供了一个可以通过网络访问的抽象消 ...

  9. 消息中间件和JMS介绍

    在一个公司创立初期,他可能只有几个应用,系统之间的关联也不是那么大,A系统调用B系统就直接调用B提供的API接口:后来这个公司做大了,他一步步发展有了几十个系统,这时候A系统要调用B系统的接口,但是B ...

最新文章

  1. Java数据结构和算法:线性表
  2. 违反了primarykey约束怎么解决_前期物业服务合同对主业有约束力吗?
  3. listview显示mysql数据_C#在listview控件中显示数据库数据
  4. 说说Android桌面(Launcher应用)背后的故事(九)——让我的桌面多姿多彩
  5. SAP gateway CSRF token的获取调试办法
  6. Wordpress插件检测机制原理
  7. LeetCode MySQL 1159. 市场分析 II(rank+over)
  8. (c语言)将一个数组逆序输出
  9. 服务器操作记录21/11/19
  10. 《线性代数及其应用 第四版》习题1.4
  11. php format tool,usb 開機碟製作工具HP USB Disk Storage format Tool 2.23
  12. log4j的详细配置(最省心完美配置)
  13. 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
  14. 单片机控制直流电机(风扇)电路详解
  15. 一周新论文 | 2020年第12周 | 自然语言处理相关
  16. hdu 5514 容斥
  17. 大厂iOS APP都用了哪些第三方库?
  18. 济南计算机机械工程学校,济南电子机械工程学校2021年招生简章
  19. 华为历年校招高频50题!
  20. Win10安装Rtree包报错:OSError: could not find or load spatialindex_c-64.dll

热门文章

  1. P4071-[SDOI2016]排列计数【组合计数,错排】
  2. 欢乐纪中某B组赛【2019.1.18】
  3. atcoder E - Greedy Ant(最优解等价+dp)
  4. 动态规划训练18 [免费馅饼 HDU - 1176 ]
  5. 2、mybatis的基本使用
  6. K8S Learning(5)——Pod
  7. Java Jenkins Api
  8. Hadoop入门(十三)远程提交wordCout程序到hadoop集群
  9. artTemplate的空白输出坑
  10. MongoDB查询实现 笛卡尔积,Union All 和Union 功能