我将Spring-JMS DefaultMessageListenerContainer实现更改为使用CACHE_NONE的cacheLevelName并遇到以下异常。概述了here。我正在使用glassfish v 2.1,Open MQ 4.4和Spring 3. *。关于我可能出错的任何想法?
网络应用日志:
[#| 2012-05-16T21:18:12.620 + 0000 |严重|太阳appserver9.1 | javax.resourceadapter.mqjmsra.outbound.connection | _ThreadID = 284; _ThreadName = updateJmsContainer-90; _RequestID = 3aa71c9e- 3ac0-4142-b914-ffbdc6e6bb37; | MQJMSRA_MC4001:构造函数:正在中止:createConnection上的JMSException = [C4000]:数据包确认失败。 user = admin,broker = localhost:45088(55601)|#]
2012-05-16 21:18:17,636 [updateJmsContainer-90] WARN org.springframework.jms.listener.DefaultMessageListenerContainer - JMS消息侦听器调用程序的设置失败,目的地为“TestQ” - 尝试恢复。原因:MQRA:CFA:分配失败:createConnection:分配连接时出错。原因:MQJMSRA_MC4001:构造函数:中止:createConnection上的JMSException = [C4000]:数据包确认失败。 user = admin,broker = localhost: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
答案 0 :(得分:1)
此C4000错误是网络通用异常处理程序。这可能是缓存级别更改的结果。应用程序可能会打开太多与服务器的连接,具体取决于您的池设置,并且服务器可能缺乏管理它们的资源 - 最好的猜测可能是内存。
请检查您的OpenMQ服务器日志文件和内存使用情况。
消费者和MQ服务器之间是否有可以控制连接建立的网络配置(防火墙,QoS路由器......)?很快打开许多连接可能被视为SYN泛洪,这是一种常见的DoS攻击。