javax.jms.JMSException:配置超过 50 个资源适配器时出现最大连接数 (50) 错误 - MDB
Posted
技术标签:
【中文标题】javax.jms.JMSException:配置超过 50 个资源适配器时出现最大连接数 (50) 错误 - MDB【英文标题】:javax.jms.JMSException: maximum connections (50) reached error while configuring more than 50 resource adapters - MDB 【发布时间】:2018-12-14 22:11:23 【问题描述】:当我们尝试配置超过 50 个 MDB(每个 MDB 到不同的 MQ)时,我们遇到了以下异常。我尝试如下更改standalone.xml 配置,但仍然没有帮助。有人可以帮助我们吗?
独立的.xml
<short-running-threads>
<core-threads count="90"/>
<queue-length count="90"/>
<max-threads count="90"/>
<keepalive-time time="10" unit="seconds"/>
</short-running-threads>
<long-running-threads>
<core-threads count="90"/>
<queue-length count="90"/>
<max-threads count="90"/>
<keepalive-time time="10" unit="seconds"/>
</long-running-threads>
堆栈跟踪:
错误 [org.jboss.msc.service.fail] (ServerService 线程池 -- 185) MSC000001:启动服务失败 jboss.deployment.subunit."test.ear"."testAppMDB.jar".component.TESTMDB.START: 服务中的 org.jboss.msc.service.StartException jboss.deployment.subunit."test.ear"."TestAppMDB.jar".component.TESTMDB.START: java.lang.RuntimeException: com.ibm.mq.connector.DetailedResourceAdapterInternalException: MQJCA1011:分配 JMS 连接失败。,错误代码:MQJCA1011 内部错误导致尝试分配连接失败。 有关失败的详细信息,请参阅链接的异常。在 org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:57) [jboss-as-ee-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_102] 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_102] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_102] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_102] 在 java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_102] 在 org.jboss.threads.JBossThread.run(JBossThread.java:122) 原因: java.lang.RuntimeException: com.ibm.mq.connector.DetailedResourceAdapterInternalException: MQJCA1011:分配 JMS 连接失败。,错误代码:MQJCA1011 内部错误导致尝试分配连接失败。 有关失败的详细信息,请参阅链接的异常。在 org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponent.activate(MessageDrivenComponent.java:209) 在 org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponent.start(MessageDrivenComponent.java:181) 在 org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:54) [jboss-as-ee-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] ... 6 更多原因: com.ibm.mq.connector.DetailedResourceAdapterInternalException: MQJCA1011:分配 JMS 连接失败。,错误代码:MQJCA1011 内部错误导致尝试分配连接失败。 有关失败的详细信息,请参阅链接的异常。在 com.ibm.mq.connector.services.JCAExceptionBuilder.buildException(JCAExceptionBuilder.java:134) 在 com.ibm.mq.connector.services.JCAExceptionBuilder.buildException(JCAExceptionBuilder.java:105) 在 com.ibm.mq.connector.inbound.ConnectionHandler.allocateConnection(ConnectionHandler.java:165) 在 com.ibm.mq.connector.inbound.MessageEndpointDeployment.acquireConnection(MessageEndpointDeployment.java:284) 在 com.ibm.mq.connector.inbound.MessageEndpointDeployment.(MessageEndpointDeployment.java:233) 在 com.ibm.mq.connector.ResourceAdapterImpl.endpointActivation(ResourceAdapterImpl.java:393) 在 org.jboss.jca.core.rar.EndpointImpl.activate(EndpointImpl.java:191) 在 org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponent.activate(MessageDrivenComponent.java:207) ... 8 更多原因:javax.jms.JMSException:最大连接数 (50) 到达 com.ibm.mq.connector.in
【问题讨论】:
【参考方案1】:很难从堆栈跟踪的格式中分辨出来,但在我看来,异常来自 WebSphereMQ JCA 资源适配器,这表明问题出在 WebSphereMQ 服务器的配置上,这似乎受到限制可能的连接数为 50。更改 JBoss 应用程序服务器中的线程池配置不会解决问题。您需要更改 WebSphereMQ 服务器以允许超过 50 个连接。
【讨论】:
感谢您的 cmets。是的,你是正确的,这不是 JBoss 的问题。因为相同的 MDB 配置在另一个环境中工作。我们正在检查 Windows 环境中的问题,看起来 TCP/IP 配置在我们的服务器中阻止了这一点。但直到现在还无法获得清晰的图像。如果我们能够解决这个问题,将分享详细信息。【参考方案2】:这个异常
Caused by: javax.jms.JMSException: maximum connections (50) reached at com.ibm.mq.connector.inbound.ConnectionHandler.allocateConnection
是 WebSphere MQ 资源适配器中 maxConnection
属性的默认设置 (50) 的结果。查看此页面以获取更多详细信息Configuring properties for the IBM MQ resource adapter。
您需要在资源适配器配置中更改此属性。我不知道您如何在 JBoss 中配置它,但在 WebSphere 中您可以通过资源 > JMS > JMS 提供者 > 资源适配器属性进行配置。
【讨论】:
【参考方案3】:您可以增加可用连接数(默认为 50):
<subsystem xmlns="urn:jboss:domain:resource-adapters:5.0">
<resource-adapters>
<resource-adapter id="wmq-jmsra.rar" statistics-enabled="true">
<archive>
wmq-jmsra.rar
</archive>
<config-property name="maxConnections">
100
</config-property>
【讨论】:
以上是关于javax.jms.JMSException:配置超过 50 个资源适配器时出现最大连接数 (50) 错误 - MDB的主要内容,如果未能解决你的问题,请参考以下文章
javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616
javax.jms.JMSException:在向JBoss EAP 7.2中的嵌入式ActiveMQ Artemis发送消息时,未能创建会话工厂。