ActivationSpec和ConnectionFactory有什么区别?

Jef*_*ght 20 java websphere java-ee ibm-mq

我的理解是:

  • MD B(消息驱动Bean)通过激活规范连接.
  • MD P s(消息驱动POJO)通过连接工厂连接.

IBM的这个图表很有帮助:

在此输入图像描述

对我来说,IBM的这个解释并没有说明差异:

  • 连接工厂 - 由应用程序用于连接到消息传递总线.
  • 队列 - 由应用程序用于发送和接收消息.
  • 激活规范 - 由应用程序的消息驱动bean用于连接到队列和接收消息.

我发现的一个真正的区别是:

会话bean和实体bean [又名MDP]允许您发送JMS消息并同步接收它们,但不是异步接收它们.为避免占用服务器资源,您可能不希望在服务器端组件中使用阻塞同步接收.要异步接收消息,请使用消息驱动的bean [MDB].

所以到目前为止我不满意的清单是:

  • 将ActivationSpec与MDB一起使用,将ConnectionFactory与POJO一起使用(但是等等,POJO 可以使用ActivationSpec吗?)
  • MDB以异步方式运行.MBP同步运行.

我的问题是:还有其他差异吗?你能澄清一下这个区别吗?

参考文献:

ag1*_*112 15

@Jeffrey Knight:让我试着根据我的经验澄清一下.

我们理解MDB是消耗传入消息的bean.现在需要指定特定MDB要从哪个目标消耗的消息类型.

MDB基本上是一个消息终点.

在符合JCA标准的MDB之前:

websphere中的流程是: -

传入消息 - >由消息侦听器监听 - >侦听器端口 - >传递给MDB

因此,开发人员通常会创建一个MDB并在ejb-jar.xml中指定消息目标详细信息,如下所示:

<message-driven-destination>
    <destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<res-ref-name>jms/QCF</res-ref-name>
<resource-ref>
    <res-type>javax.jms.QueueConnectionFactory</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)

部署者需要创建侦听器端口并将已部署的MDB关联到侦听器端口.上面指定的QueueConnectionFactory用于创建与队列的连接.

发布符合JCA标准的MDB:

在JCA之后,MDB被视为JCA资源.JCA规范也包含了消息传递框架API.JCA的流程是: -

incoming message --> listened by Message listener --> Resource Adapter-->deliver to MDB
Run Code Online (Sandbox Code Playgroud)

现在,因为JCA被创建用于任何类型的资源,无论是JDBC,JMS,EIS等,所以它具有通用的"激活规范"方式来为任何适配器创建配置.在ra.xml文件中,提到了特定适配器需要哪种激活规范才能工作.激活规范不是运行时实体,它只是资源适配器使用的配置细节.在上述情况下,JCA适配器将使用激活规范中提到的队列连接工厂的连接.所以基本上两个案例中的队列连接工厂都是一样的.

对于websphere,您可以使用SIB(服务集成总线)目标进行消息传递,也可以使用外部软件(如websphere MQ)进行消息传递.

在用于消息传递的SIB目的地的情况下: - SIB已经实现了JCA资源适配器.因此,在SIB上使用目标的MDB可以使用激活规范来指定目标详细信息.和资源适配器模块可以与消息传递引擎交互,并可以将消息传递给MDB.

对于像websphere MQ这样的外部消息传递框架: - 由于websphere MQ没有实现任何JCA适配器,因此我们需要配置侦听器端口以连接到驻留在websphere MQ上的目标.将侦听端口传递给MDB的是侦听器端口.

简而言之,两种情况都使用队列连接工厂来获取队列连接.在一种情况下,资源适配器(具有激活规范形式的配置信息)用于传递消息,而在其他情况下,它是用于传递消息的侦听器端口(绑定到队列和工厂).

我希望现在澄清一下.


Kez*_*lia 12

它们都是配置,但连接工厂用于出站消息,激活规范用于入站消息传递.

这就是我从IBM那里得到的.

激活规范是JCA 1.5规范的一部分.MDB应用程序使用激活规范连接到WebSphere MQ队列管理器以处理入站消息.激活规范还提供其他选项,例如安全设置.

JMS连接工厂包含有关如何创建连接的信息.当应用程序需要JMS连接时,工厂会创建连接实例.连接工厂需要与先前创建的激活规范相同的连接信息,但用于来自MDB的出站消息,而激活规范用于入站消息.