0

我将 Spring-JMS DefaultMessageListenerContainer 实现更改为使用 CACHE_NONE 的 cacheLevelName 并遇到以下异常。此处概述了这些更改。我正在使用 glassfish v 2.1、Open MQ 4.4 和 Spring 3.*。关于我可能出错的地方有什么想法吗?

网络应用日志:

[#|2012-05-16T21:18:12.620+0000|SEVERE|sun-appserver9.1|javax.resourceadapter.mqjmsra.outbound.connection|_ThreadID=284;_ThreadName=updateJmsContainer-90;_RequestID=3aa71c9e-3ac0-4142 -b914-ffbdc6e6bb37;|MQJMSRA_MC4001:构造函数:Aborting:JMSException on createConnection=[C4000]:数据包确认失败。用户=管理员,经纪人=本地主机:45088(55601)|#]

2012-05-16 21:18:17,636 [updateJmsContainer-90] 警告 org.springframework.jms.listener.DefaultMessageListenerContainer - 目标“TestQ”的 JMS 消息侦听器调用程序设置失败 - 试图恢复。原因:MQRA:CFA:allocation failure:createConnection:Error in allocating an connection。原因:MQJMSRA_MC4001:constructor:Aborting:JMSException on createConnection=[C4000]:数据包确认失败。用户=管理员,经纪人=本地主机:45088(55601)

经纪人日志文件:

[16/May/2012:21:10:14 UTC] [B1039]: Broker "appbroker@host:45028" ready.
[16/May/2012:21:10:41 UTC] [B1065]: Accepting: guest@206.220.220.111:56811->jms:55601. Count: service=1 broker=1
[16/May/2012:21:10:48 UTC] [B1065]: Accepting: guest@206.220.220.111:25432->jms:55601. Count: service=2 broker=2
[16/May/2012:21:10:55 UTC] [B1065]: Accepting: guest@206.220.220.111:25478->jms:55601. Count: service=3 broker=3
[16/May/2012:21:11:56 UTC] [B1065]: Accepting: guest@206.220.220.73:44040->jms:55601. Count: service=4 broker=4
[16/May/2012:21:11:56 UTC] [B1065]: Accepting: guest@206.220.219.227:33237->jms:55601. Count: service=5 broker=5
...
...
[16/May/2012:21:17:50 UTC] [B1065]: Accepting: admin@127.0.0.1:46564->jms:55601. Count: service=500 broker=500

[16/May/2012:21:17:50 UTC] WARNING [B3004]: **No threads are available to process a new connection on service jms. 1000 threads out of a maximum of 1000 threads are already in use by other connections.** A minimum of 2 threads must be available to process the connection. Please either limit the # of connections or increase the imq.<service>.max_threads property. Closing the new connection.
[16/May/2012:21:18:01 UTC] [B1066]:   Closing: ???@127.0.0.1:0->jms:0 because "[B3004]: No threads are available to process a new connection on service jms. 1000 threads out of a maximum of 1000 threads are already in use by other connections. A minimum of 2 threads must be available to process the connection. Please either limit the # of connections or increase the imq.<service>.max_threads property. Closing the new connection. ". Count: service=0 broker=500
[16/May/2012:21:18:01 UTC] WARNING Problem detected while attempting to send notification mq.connection.close from MBean Service Monitor
[16/May/2012:21:18:01 UTC] WARNING Cannot determine service name from connection ID: 7881641671884329217
4

1 回答 1

1

此 C4000 错误是网络通用异常处理程序。这可能是缓存级别更改的结果。应用程序可能会打开太多与服务器的连接,具体取决于您的池设置,并且服务器可能缺乏管理它们的资源 - 最好的猜测可能是内存。

请检查您的 OpenMQ 服务器日志文件和内存使用情况。

消费者和 MQ 服务器之间是否有任何网络配置(防火墙、QoS 路由器...)可以控制连接建立?快速打开许多连接可能被视为 SYN 泛洪,这是一种常见的 DoS 攻击。

于 2012-05-18T13:03:58.327 回答