MQ出现2059错误如何快速断开

问题描述

是这样的,我用JAVA写了一个连接MQ的接口,在使用过程中发现,业务功能在调用此接口后,如果MQ连接出现问题会出现比较长时间的等待,由于数据处理是放在一个事物中的,这样就会导致功能页面长时间静止。请问如何解决此问题。publicStringsentData(){StringqManager=manger;//QueueManagernameStringqName=qname;//QueueNameMQQueueManagerqMgr=null;MQQueuequeue=null;try{//configureconnectionparametersMQEnvironment.hostname=hostname;//MQServernameorIP//MQEnvironment.port=1414;//listenrportif(log.isDebugEnabled())log.debug("Connectingtoqueuehostname:"+hostname);MQEnvironment.channel=channel;//Server-ConnectionChannelif(log.isDebugEnabled())log.debug("Connectingtoqueuechannel:"+channel);MQEnvironment.CCSID=ccsid;if(log.isDebugEnabled())log.debug("Connectingtoqueueccsid:"+ccsid);//CreateaconnectiontotheQueueManagerif(log.isDebugEnabled())log.debug("ConnectingtoqueueMQQueueManager:"+qManager);qMgr=newMQQueueManager(qManager);//Setuptheoptionsonthequeuewewishtoopen//intopenOptions=MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT;intopenOptions=MQC.MQOO_OUTPUT|MQC.MQOO_BIND_ON_OPEN|MQC.MQOO_FAIL_IF_QUIESCING;//-----------------//Nowspecifythequeuethatwewishtoopenandtheopenoptionsif(log.isDebugEnabled())log.debug("Accessingqueue:"+qName);queue=qMgr.accessQueue(qName,openOptions);//DefineasimpleWebSphereMQMessage...MQMessagemsg=newMQMessage();//...andwritesometextinUTF8format//Filefile=newFile("d:\sd.000000129497.00000001.13500201.data");//for(intm=0;m<187;m++){//System.out.print(""+data[m]);////}//data=getBytesFromFile(file);//FileOutputStreamfos=newFileOutputStream(newFile("D:/data.txt"));//写入文件//fos.write(data);//for(intm=0;m<datalength;m++){//System.out.print(""+data[m]);////}Stringhead="";for(intm=recvcode.length();m<8;m++){head=head+"0";}recvcode=head+recvcode;recv=recvcode.getBytes();msg.correlationId=recv;//SpecifythedefaultputmessageoptionsMQPutMessageOptionspmo=newMQPutMessageOptions();inttotallen;inttotalduan;//intmesslen=8*1024;totallen=0;totalduan=0;//2011-1-13玄加林调整--解决数据量大时发送失败的问题//while((totallen+messlen)<datalength)////8888888//{//pmo.options=32770;//---------------------------//msg.messageFlags=2;//-----------------------//msg.write(data,totallen,messlen);//8888888888888//queue.put(msg,pmo);//totallen+=messlen;//totalduan++;//}msg.messageFlags=4;msg.write(data,totallen,datalength-totallen);queue.put(msg,pmo);totalduan++;//Putthemessagetothequeueif(log.isDebugEnabled())log.debug("Sendingamessage...");return"发送成功";}catch(MQExceptionex){//出现异常直接关闭连接try{if(qMgr!=null){qMgr.disconnect();}}catch(MQExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}if(log.isDebugEnabled())log.debug("AWebSphereMQErroroccured:CompletionCode"+ex.completionCode+"ReasonCode"+ex.reasonCode);return"发送失败";}catch(java.io.IOExceptionex){if(log.isDebugEnabled())log.debug("AnIOExceptionoccuredwhilstwritingtothemessagebuffer:"+ex);return"发送失败";}finally{//根据玄加林的要求,增加关闭mq连接的操作2010-12-21---linpengtry{queue.close();}catch(MQExceptione){//TODOAuto-generatedcatchblocktry{qMgr.disconnect();}catch(MQExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}e.printStackTrace();}try{qMgr.disconnect();}catch(MQExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}

解决方案

解决方案二:
已解决,捕捉异常后switch(ex.reasonCode){//连接断开case2009://队列管理者无效或未知case2058://队列管理者无效case2059://意外的错误发生case2195://服务器正在启动case2161://服务器正在关闭case2162://无权访问服务器队列管理者case2035://其他异常default:}根据异常类型马上进行处理,也可捕捉异常后马上关闭连接try{if(qMgr!=null){qMgr.disconnect();}}catch(MQExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
解决方案三:
代码整理下。。没法看。
解决方案四:
有定义超时时间吗?
解决方案五:
有定义超时时间吗?
解决方案六:
代码整理下。。没法看。
解决方案七:
有定义超时时间吗?
解决方案八:
加入错误返回代码
解决方案九:
加入错误代码

时间: 2024-09-20 19:59:43

MQ出现2059错误如何快速断开的相关文章

MQ上AMQ4036错误

问题描述 请教这个问题一般各位大神都是怎么解决的环境linux6.3x86_64MQ7.0我在windows上远程连接报这个错误

ibm-IBM MQ MQJE001: 完成代码为 &amp;amp;#39;2&amp;amp;#39;,原因为 &amp;amp;#39;3013&amp;amp;#39;

问题描述 IBM MQ MQJE001: 完成代码为 '2',原因为 '3013' 运行tools自带的样例 MQ服务器按照代码中的队列管理器和队列创建的 结果就抛这个异常,求大侠帮助. 个人联系方式 QQ 497673753 非常感谢 MQJE001: 完成代码为 '2',原因为 '3013'. Exception in thread "main" com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2008: 打开 MQ 队列 'Q

如何进行WebShpere MQ 运行故障的定位分析和排除

问题描述 目前随着我们在中国的WebSphereMQ(MQSeries)用户数量越来越多,越来越多的用户开始对MQ使用时的性能优化问题提出要求,希望能够更好地使用我们的产品,并尽可能的发挥它的最大优势,这里,我根据日常积累的经验谈一谈在MQ性能优化方面应该考虑的因素.任何一种软件,都会存在一定的系统管理工作,WebSphereMQ也不例外,在使用WebSphereMQ(以下简称MQ)时,我们可能会由于配置的原因或者由于系统的原因,也可能由于MQ本身的原因,而遇到MQ运行过程中的一些故障和问题,如

linux下安装php扩展memcache的方法_Linux

memcache 的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率,减轻后端数据库的读写压力. 实验环境:centos 6.6 x86_64 LAMP环境搭建完毕:php版本5.6.8.apache版本2.4.12    1.在安装memcached之前需要安装libevent支持: # wget http://syslab.comsenz.com/downloads/linux/libevent-1.4.12-stable.

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9204

问题描述 服务器和客户端都已配置好(mq7.0试用版),并且可发送和接收消息,但自己编写的一个java程序时报如下错误atcom.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:869)atcom.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:761)atcom.ibm.mq.MQQueueManage

WebSphere MQ收发消息出现错误(AMQ9208 AMQ9206),该如何解决?

问题描述 WebSphereMQ收发消息出现错误,该如何解决?错误消息如下:AMQ9206:Errorsendingdatatohost11.99.212.231.EXPLANATION:AnerroroccurredsendingdataoverTCP/IPto11.99.212.231.Thismaybeduetoacommunicationsfailure.ACTION:ThereturncodefromtheTCP/IP(send)callwas10054X('2746').Record

JAVA应用运行一段时间不能从MQ本地队列取消息,有错误信息

问题描述 JAVA应用运行一段时间不能从MQ本地队列取消息,应用服务weblogic11g控制台不停的报如下错误:解决方案二:#<2014-5-28下午07时12分56秒CST><Notice><WebLogicServer><WIN-DCGCIFP3DEO><evoServer><main><<WLSKernel>><><><1401275576125><BEA-00

ssl 配置 mq后 ,导致webservices 客户端https 请求证书错误

问题描述 ssl 配置 mq后 ,导致webservices 客户端https 请求证书错误 active mq ssl配置后,导致axis2生成的webservice 客户端https 请求报错

IBM MQ 错误日志:此消息与其他消息一起发出,失败的进程是进程 2604

问题描述 -----amqxfdcp.c:815--------------------------------------------------------2013/2/1917:44:43-Process(2604.4)User(MUSR_MQADMIN)Program(amqzmuc0.exe)Host(FTPSERVER)AMQ6125:发生了内部WebSphereMQ错误.说明:发生有关标识20806824的内部错误.此消息与其他消息一起发出.操作:请使用随系统提供的标准设施来记录问