Java mq 2059_mq打开输出计数达到1000次 抛出2059异常

package com.travelsky.receive;import java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import msmqToJms.com.janic.MsmqSender;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;import com.ibm.mq.MQC;import com.ibm.mq.MQEnvironment;import com.ibm.mq.MQException;import com.ibm.mq.MQGetMessageOptions;import com.ibm.mq.MQMessage;import com.ibm.mq.MQPutMessageOptions;import com.ibm.mq.MQQueue;import com.ibm.mq.MQQueueManager;import com.travelsky.consts.Const;import com.travelsky.main.Travelsky;/** * 用来接收一条消息 非文件 * @author Administrator * */public class ReceiveMsg {        Logger logger;        public ReceiveMsg(){                PropertyConfigurator.configure(Const.LOGPATH);        logger  =  Logger.getLogger(ReceiveMsg. class );        }        /**         * 发送消息测试用         * @param givenHostName         * @param givenChannel         * @param givenQueueName         * @param givenQueueManagerName         * @param givenPort         * @throws Exception         */        public void sender(String givenHostName, String givenChannel,                        String givenQueueName, String givenQueueManagerName,                        int givenPort)        {                String hostName = givenHostName;                String channel = givenChannel;                String queueManagerName = givenQueueManagerName;                String queueName = givenQueueName;                int port = givenPort;                MQQueue queue = null;                                                MQEnvironment.hostname = hostName;                MQEnvironment.channel = channel;                MQEnvironment.port = port;                MQEnvironment.CCSID = 1381;                                int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;//建立打开方式                                MQQueueManager qMgr = null;                try {                        qMgr = new MQQueueManager(Const.QMANAGERNAME_IBM);                } catch (MQException e) {                        logger.error(e.getMessage() + " ---- 无法与IBM WEBSPHERE MQ 消息队列管理器连接,请检查消息队列管理器名字是否正确!");                }                try {                        queue = qMgr.accessQueue(Const.QQUEUENAME_IBM, openOptions);                } catch (MQException e) {                        logger.error(e.getMessage()+" ---- 无法与IBM WEBSPHERE MQ 消息队列连接,请检查消息队列名字是否正确!");                }//连接队列                MQPutMessageOptions pmo = new MQPutMessageOptions();//创建消息的放入方式                MQMessage message = new MQMessage();// 创建MQ消息实例                 try {                        message.writeObject(new Travelsky().i + "");                } catch (IOException e) {                        logger.error(e.getMessage() + " ---- 将消息写入MQMessage对象是出现IO异常,");                }                 try {                        queue.put(message, pmo);                } catch (MQException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }                            try {                        qMgr.commit();                } catch (MQException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }        }        private MsmqSender ms;        private String msg ;/** * 从服务器上获取消息 * @param givenHostName * @param givenChannel * @param givenQueueName * @param givenQueueManagerName * @param givenPort */        public void receiver(String givenHostName, String givenChannel,        String givenQueueName, String givenQueueManagerName,        int givenPort)        {                ms = new MsmqSender(Const.LOGPATH);                String hostName = givenHostName;                String channel = givenChannel;                String queueManagerName = givenQueueManagerName;                String queueName = givenQueueName;                int port = givenPort;                MQQueueManager queueManager = null;                MQQueue queue = null;                try                {                        /* MQEnvironment初始化 */                        MQEnvironment.hostname = hostName;//设置主机                        MQEnvironment.channel = channel;//设置主机通道                        MQEnvironment.port = port;//设置端口                        MQEnvironment.CCSID = 1381;                        MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,                        MQC.TRANSPORT_MQSERIES);//设置操作消息                                                /* 连接到队列管理器 */                        queueManager = new MQQueueManager(queueManagerName);                        /* 设置打开选项以便打开用于输出的队列,如果队列管理器已经停止,设置应对不成功的情况 */                        int openOptions = MQC.MQOO_INPUT_SHARED                                        | MQC.MQOO_FAIL_IF_QUIESCING;                        /* 打开队列 */                        queue = queueManager.accessQueue(queueName, openOptions, null,                                        null, null);                        /* 设置放置消息选项 */                        MQGetMessageOptions gmo = new MQGetMessageOptions();                        /* 在同步点控制下获取消息 */                        gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;                        /* 如果在队列上没有消息则等待 */                        gmo.options = gmo.options + MQC.MQGMO_WAIT;                        /* 如果队列管理器停顿则失败 */                        gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;                        /* 设置等待时间间隔 */                        gmo.waitInterval = 3000;                        /* 创建MQMessage类 */                        MQMessage inMsg = new MQMessage();                        /* 从队列到消息缓冲区获取消息 */                        queue.get(inMsg, gmo);                        /* 从消息读取用户数据 */                        try {                                msg = (String) inMsg.readObject();                                //发送获取的msg到msmq服务器上                                if(msg.trim().equals("")|| msg.trim().equals(null))                                {                                        logger.info(msg + ": 服务器端队列中没有消息或是消息内容为空!");                                        return;                                }                                else                                {                                        /**一行一行读取获取到得字符串,然后再发送出去*/                                        StringReader sr = new StringReader(msg);                                        BufferedReader br = new BufferedReader(sr);                                        String str = "";                                        while((str = br.readLine()) != null)                                        {                                                ms.sendMsg(str, Const.DLLPATH, Const.HOSTNAME_MSMQ,                                                                 Const.QTYPE_MSMQ, Const.QNAME_MSMQ, Const.ACCESSTYPE_MSMQ, Const.SHARETYPE_MSMQ, Const.TIMEOUT_MSMQ);                                                logger.info(msg);                                        }                                        //关闭流                                        br.close();                                        sr.close();                                }                        } catch (ClassNotFoundException e) {                                logger.error(e.getMessage());                        }                        /* 提交事务 */                        queueManager.commit();                }                catch (MQException ex)                {                        String erro = "An MQ Error Occured:Completion Code is :t" +                        ex.completionCode + "nn The reason code is:t" +                        ex.reasonCode;                        logger.error(erro);                }                catch (IOException ioe)                {                        logger.error(ioe.getMessage());                }                finally                {                        try                        {                                if (queue != null)                                {                                        queue.close();                                }                                if (queueManager != null)                                {                                        queueManager.close();                                        queueManager.disconnect();                                }                        }                        catch (MQException mqe)                        {                                logger.error(mqe.getMessage());                        }                }        }}这是我的代码 一个方法是想mq中发送消息 另一个是从mq中获取消息 然后再将获取到得消息发送到MSMQ中

我的代码好像确实没有释放资源 不知道怎么释放 我这个程序是7*24小时不停的运转的

2011-04-18 11:06:29  [ Timer-0:388632 ] - [ ERROR ]  An MQ Error Occured:Completion Code is :        2

The reason code is:        2059

这是log错误收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值