Jboss EAP 6.4中不同Message提供程序的多个资源适配器是否共享默认的bean-instance-pool?

时间:2016-10-18 15:29:47

标签: jms jboss6.x solace resource-adapter

我们正在使用JBoss EAP6.4。在我们的项目中,我们使用两个MOM:  1)Websphere MQ 2)Solace MQ  这就是我们在standalone.xml中定义的两个MOM的资源适配器

<mdb>

在上面的文件中,我们基本上已经为WMQ定义了两个resourceAdapter,为Solace定义了一个。

  • <bean-instance-pool-ref标记下,我们定义了默认资源适配器名称和定义的<mdb> <resource-adapter-ref resource-adapter-name="wmq.jmsra.rar"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb> 值,以限制默认情况下用于Message Driven Beans的实例池。
  • 对于少数MDB,我们使用jboss-ejb3.xml显式覆盖每个bean的实例池值

由于我们有多个消息驱动的bean同时监听WMQ和SOLACE, 我的问题是:

  1. 我们还没有在jboss-ejb3.xml中定义显式池的MDB(监听WMQ队列和SOLACE队列)是否共享在标签下定义的相同默认池,即

    {{1}}
  2. 或者默认池只适用于侦听WMQ队列的MDB。

  3. 如果默认池仅应用于侦听WMQ队列的MDB,那么MDB会监听没有在standalone.xml或jboss-ejb3.xml中定义的池大小的Solace队列会发生什么

1 个答案:

答案 0 :(得分:2)

1)未指定实例池的MDB将使用默认的mdb-strict-max-pool。您可以定义自己的池(我推荐):

        <pools>
            <bean-instance-pools>
                <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                <strict-max-pool name="MyPool" max-pool-size="10" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
            </bean-instance-pools>
        </pools>

然后使用注释:

import org.jboss.ejb3.annotation.Pool;

@Pool(value="MyPool") 
MDB中的

。这也可以在部署描述符文件中完成。

2)见上文。我更喜欢每个MDB部署的实例池。我不喜欢MDB竞争实例池。

3)同上。请注意,您可以在JMX中看到MDB部署正在使用的实例池名称。请注意,如果您有单独的实例池,则池统计信息会变得更有意义。