我们正在使用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的实例池。 由于我们有多个消息驱动的bean同时监听WMQ和SOLACE, 我的问题是:
我们还没有在jboss-ejb3.xml中定义显式池的MDB(监听WMQ队列和SOLACE队列)是否共享在标签下定义的相同默认池,即
{{1}}
或者默认池只适用于侦听WMQ队列的MDB。
答案 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部署正在使用的实例池名称。请注意,如果您有单独的实例池,则池统计信息会变得更有意义。