亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

MQ報2009之后阻塞在send上

連接工廠配置:

bean id="WX_ConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">

? <property name="hostName" value="{{UMBP.WX.hostName}}" />

? <property name="port" value="{{UMBP.WX.port}}" />

? <property name="CCSID" value="1381" />

? <property name="channel" value="SYSTEM.DEF.SVRCONN"/>?

? <property name="queueManager" value="{{UMBP.WX.queueManager}}" />

? <property name="transportType" value="1"/>

</bean>

模板配置:

<bean id="wxTemplate" class="org.springframework.jms.core.JmsTemplate">

? <property name="connectionFactory" ref="WX_ConnectionFactory" />

? <property name="defaultDestination" ref="WX_queueSend" />

? <property name="pubSubDomain" value="false" />

</bean>

===============================================================

程序程序:

try

{

? MessageCreator messageCreator = createTxtMsg(msg);

? wxTemplate.setExplicitQosEnabled(true);

? wxTemplate.setPriority(data.getSprior());

79 ?wxTemplate.send(messageCreator);

80 ?log.info("微信從發送表到MQ處理完成,UUID:["+data.getUuid()+"],數據內容:" + msg);

81}

82catch (JmsException e)

83{

84 ?data.setState(5);

85 ?pushWeixinMapper.updateByPrimaryKey(data);

86 ? ? ? ? log.error("微信從發送表到MQ處理時發生錯誤,錯誤原因:", e);

? ? ? ? return;

}

==============================================================

該段程序單線程不斷的向MQ隊列中發送消息,2017年每天發送小于1萬條消息,沒問題?,F在每天發送5萬條,差不多一個星期就會掛掉一次。

報錯前第幾條消息在79行send消息后,86行會拋出異常,報錯碼2009.

最后一條消息就堵塞在79行上,等待很久都沒釋放。


==============================================================

詳細報錯信息:

[2018-01-15 17:05:59,455][pool-14-thread-1][com.tienon.service.jms.MQ.sender.WeiXinMQSender.sendMSG(WeiXinMQSender.java:86)](微信從發送表到MQ處理時發生錯誤,錯誤原因:)

org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: 連接至隊列管理器“QM_C_UMBP2”失敗,連接方式為“Client”,主機名為“ums-umbp-02.prd.bsz.com”。 檢查隊列管理器是否已啟動,如果正在以客戶機方式運行,那么還要檢查是否有偵聽器在運行。請參閱鏈接的異常以獲取更多信息。; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 調用失敗,完成代碼為“2”(“MQCC_FAILED”),原因為“2009”(“MQRC_CONNECTION_BROKEN”)。

at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:308)

at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)

at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:474)

at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:539)

at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:531)

at com.tienon.service.jms.MQ.sender.WeiXinMQSender.sendMSG(WeiXinMQSender.java:79)

at com.tienon.service.jms.MQ.sender.WeiXinMQSender.sendMSGList(WeiXinMQSender.java:103)

at com.tienon.service.jms.MQ.SendMsgToMQRunnable.run(SendMsgToMQRunnable.java:134)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)

at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)

at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)

at java.lang.Thread.run(Thread.java:738)

Caused by: com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: 連接至隊列管理器“QM_C_UMBP2”失敗,連接方式為“Client”,主機名為“ums-umbp-02.prd.bsz.com”。 檢查隊列管理器是否已啟動,如果正在以客戶機方式運行,那么還要檢查是否有偵聽器在運行。請參閱鏈接的異常以獲取更多信息。

at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:599)

at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:219)

at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:410)

at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:7855)

at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7331)

at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:276)

at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6058)

at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:115)

at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:198)

at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)

at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:461)

... 14 more

Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 調用失敗,完成代碼為“2”(“MQCC_FAILED”),原因為“2009”(“MQRC_CONNECTION_BROKEN”)。

at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:206)

... 23 more

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2009;AMQ9206: 數據發送到主機 'ums-umbp-02.prd.bsz.com/1?.?.8.212:334?? (ums-umbp-02.prd.bsz.com)' 的錯誤。 [1=java.net.SocketException[Socket closed],3=ums-umbp-02.prd.bsz.com/1?.?.8.212:334? (ums-umbp-02.prd.bsz.com),4=TCP,5=OutputStream.write]

at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.send(RemoteTCPConnection.java:1270)

at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.sendTSH(RemoteConnection.java:2457)

at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.addHconn(RemoteConnection.java:791)

at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:311)

at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1371)

at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:331)

... 22 more

Caused by: java.net.SocketException: Socket closed

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.send(RemoteTCPConnection.java:1212)

... 27 more

[2018-01-15 17:05:59,510][pool-14-thread-1][com.tienon.service.jms.MQ.sender.WeiXinMQSender.sendMSG(WeiXinMQSender.java:86)](微信從發送表到MQ處理時發生錯誤,錯誤原因:)

org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: 連接至隊列管理器“QM_C_UMBP2”失敗,連接方式為“Client”,主機名為“ums-umbp-02.prd.bsz.com”。 檢查隊列管理器是否已啟動,如果正在以客戶機方式運行,那么還要檢查是否有偵聽器在運行。請參閱鏈接的異常以獲取更多信息。; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 調用失敗,完成代碼為“2”(“MQCC_FAILED”),原因為“2009”(“MQRC_CONNECTION_BROKEN”)。

at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:308)

at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)

at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:474)

at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:539)

at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:531)

at com.tienon.service.jms.MQ.sender.WeiXinMQSender.sendMSG(WeiXinMQSender.java:79)

at com.tienon.service.jms.MQ.sender.WeiXinMQSender.sendMSGList(WeiXinMQSender.java:103)

at com.tienon.service.jms.MQ.SendMsgToMQRunnable.run(SendMsgToMQRunnable.java:134)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)

at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)

at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)

at java.lang.Thread.run(Thread.java:738)

Caused by: com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: 連接至隊列管理器“QM_C_UMBP2”失敗,連接方式為“Client”,主機名為“ums-umbp-02.prd.bsz.com”。 檢查隊列管理器是否已啟動,如果正在以客戶機方式運行,那么還要檢查是否有偵聽器在運行。請參閱鏈接的異常以獲取更多信息。

at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:599)

at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:219)

at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:410)

at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:7855)

at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7331)

at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:276)

at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6058)

at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:115)

at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:198)

at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)

at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:461)

... 14 more

Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 調用失敗,完成代碼為“2”(“MQCC_FAILED”),原因為“2009”(“MQRC_CONNECTION_BROKEN”)。

at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:206)

... 23 more

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2009;AMQ9206: 數據發送到主機 'ums-umbp-02.prd.bsz.com/1?.?.8.212:334? (ums-umbp-02.prd.bsz.com)' 的錯誤。 [1=java.net.SocketException[Socket closed],3=ums-umbp-02.prd.bsz.com/1?.?.8.212:334? (ums-umbp-02.prd.bsz.com),4=TCP,5=OutputStream.write]

at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.send(RemoteTCPConnection.java:1270)

at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.sendTSH(RemoteConnection.java:2457)

at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.addHconn(RemoteConnection.java:791)

at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:311)

at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1371)

at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:331)

... 22 more

Caused by: java.net.SocketException: Socket closed

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.send(RemoteTCPConnection.java:1212)

... 27 more

正在回答

1 回答

MQ2009出現原因:網絡斷連 、確認網絡狀況良好、MQ服務端連接超時 、MQ服務端和客戶端程序會定時發送心跳通知(默認5秒),如果MQ服務端無法及時收到心跳通知,就會斷開與客戶端程序的連接,也會導致MQ2009錯誤。
解決方法:修改MQ通道數、增大MQ最大連接通道個數和最大活躍連接通道個數,重啟。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

MQ報2009之后阻塞在send上

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號