互联网服务java

Java连接MQ,发送和读取

直接上代码:
import java.io.IOException;   
import com.ibm.mq.MQC;   
import com.ibm.mq.MQEnvironment;   
import com.ibm.mq.MQException;   
import com.ibm.mq.MQMessage;   
import com.ibm.mq.MQPutMessageOptions;   
import com.ibm.mq.MQQueue;   
import com.ibm.mq.MQQueueManager;   
  
public class MQSender implements Runnable {   
    private static final String MQ_MANAGER = "QM2";   
    private static final String MQ_HOST_NAME = "10.0.16.15";   
    private static final String MQ_CHANNEL = "service2";   // "SYSTEM.DEF.SVRCONN";//
    private static final String MQ_QUEUE_NAME = "LQ1";   
    private static final int MQ_PROT = 1434;   
    private static final int MQ_CCSID = 1208;
  
    public void run() {   
        MQQueueManager mqQueueManager = null;   
        MQQueue mqQueue = null;
        try {   
            MQEnvironment.addConnectionPoolToken();   
            MQEnvironment.hostname = MQ_HOST_NAME;   
            MQEnvironment.channel = MQ_CHANNEL ;  
            MQEnvironment.port = MQ_PROT;   
            MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);   
            MQEnvironment.CCSID = MQ_CCSID;   
            int sendOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;   
            mqQueueManager = new MQQueueManager(MQ_MANAGER);   
            mqQueue = mqQueueManager.accessQueue(MQ_QUEUE_NAME, sendOptions, null, null, null);   
            MQPutMessageOptions mqPutMessageOptions = new MQPutMessageOptions();   
            MQMessage mqMessage = null;   
            String putMessage = "你好啊"; 
            mqMessage = new MQMessage();   
            mqMessage.format = MQC.MQFMT_STRING;   
//            mqMessage.write(putMessage.getBytes()); 
            mqMessage.writeUTF(putMessage);
            mqQueue.put(mqMessage, mqPutMessageOptions); 
        } catch (MQException e) {   
            e.printStackTrace();   
        } catch (IOException e1) {   
            e1.printStackTrace();   
        } finally {   
            if (mqQueue != null) {   
                try {   
                    mqQueue.close();   
                } catch (MQException e) {   
                    e.printStackTrace();   
                }   
            }   
            if (mqQueueManager != null) {   
                try {   
                    mqQueueManager.close();   
                } catch (MQException e) {   
                    e.printStackTrace();   
                }   
            }   
        }   
    } 

    public static void main(String arg[]) {   
        MQSender client = new MQSender();   
        Thread mqClientThread = new Thread(client);   
        mqClientThread.start();   
    }   
}
参与31

21同行回答

lykeylykey开发工程师jinze
回复 16# lykey 这个已经解决了设置1208就可以了显示全部
回复 16# lykey

这个已经解决了设置1208就可以了收起
金融其它 · 2013-06-07
浏览837
lykeylykey开发工程师jinze
我使用监听接收消息,3个汉字以上会在前面加了一些奇怪的东西???3个字就正常,不过了也加了一些空格??我想问问是为什么?我使用 另一个类接收就没事显示全部

QQ图片20130607160859.jpg



我使用监听接收消息,3个汉字以上会在前面加了一些奇怪的东西???
3个字就正常,不过了也加了一些空格??
我想问问是为什么?
我使用 另一个类接收就没事收起
金融其它 · 2013-06-07
浏览816
lykeylykey开发工程师jinze
我使用监听接收消息,3个汉字以上会在前面加了一些奇怪的东西???3个字就正常,不过了也加了一些空格??我想问问是为什么?我使用 另一个类接收就没事显示全部

QQ图片20130607160859.jpg


我使用监听接收消息,3个汉字以上会在前面加了一些奇怪的东西???
3个字就正常,不过了也加了一些空格??
我想问问是为什么?
我使用 另一个类接收就没事收起
金融其它 · 2013-06-07
浏览839
lykeylykey开发工程师jinze
使用监听,我把编码都设置成一样了,可是读取出来还是乱码?怎么解决啊?显示全部
使用监听,我把编码都设置成一样了,可是读取出来还是乱码?怎么解决啊?收起
金融其它 · 2013-06-07
浏览790
guolimin1118guolimin1118产品总监上海派拉软件有限公司
回复 14# guolimin1118     把*去掉,随便改个东东。显示全部
回复 14# guolimin1118


    把*去掉,随便改个东东。收起
互联网服务 · 2013-06-07
浏览829
guolimin1118guolimin1118产品总监上海派拉软件有限公司
回复 12# luckhouge 显示全部
回复 12# luckhouge 收起
互联网服务 · 2013-06-07
浏览848
guolimin1118guolimin1118产品总监上海派拉软件有限公司
回复 12# luckhouge 显示全部
回复 12# luckhouge 收起
互联网服务 · 2013-06-07
浏览820
luckhougeluckhouge开发工程师bank
回复 1# wenzi5a321 现在项目中java直连服务端报错,是Server端给的通道不对吗? com.ibm.mq.MQException: MQJE001: 完成代码为“2”,原因为“2059”。         at com.ibm.mq.MQManagedConnectionJ11.(MQManagedConnectionJ11.java:238)   ...显示全部
回复 1# wenzi5a321

现在项目中java直连服务端报错,是Server端给的通道不对吗?
com.ibm.mq.MQException: MQJE001: 完成代码为“2”,原因为“2059”。
        at com.ibm.mq.MQManagedConnectionJ11.(MQManagedConnectionJ11.java:238)
        at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:505)
        at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:547)
        at com.ibm.mq.StoredManagedConnection.(StoredManagedConnection.java:95)
        at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:182)
        at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:869)
        at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:761)
        at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:712)
        at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:171)
        at com.ibm.mq.MQQueueManager.(MQQueueManager.java:603)
        at com.bankht.cis.tps.framework.session.network.mq.MQTransportChannel.connect(MQTransportChannel.java:118)
        at com.bankht.cis.tps.framework.session.network.mq.MQTransportChannel.newConnection(MQTransportChannel.java:92)
        at com.bankht.cis.tps.framework.session.network.mq.MQTransportChannel.execute(MQTransportChannel.java:56)
        at com.bankht.cis.tps.framework.core.thread.AbstractThreadRunnable.run(AbstractThreadRunnable.java:43)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9204: 与主机 '14.18.20.17(50017)' 的连接被拒绝。 [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2059;AMQ9547: 远程通道的类型对于请求的操作不合适。 [3=CH.G]],3=
14.18.20.17(50017) ,5=RemoteConnection.analyseErrorSegment]
        at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:2010)
        at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1227)
        at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:915)
        at com.ibm.mq.MQManagedConnectionJ11.(MQManagedConnectionJ11.java:227)
        ... 16 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9547: 远程通道的类型对于请求的操作不合适。 [3=
CH.G]
        at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.analyseErrorSegment(RemoteConnection.java:4268)
        at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.receiveTSH(RemoteConnection.java:2902)
        at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.initSess(RemoteConnection.java:1440)
        at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.connect(RemoteConnection.java:1115)
        at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:350)
        at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1599)
收起
金融其它 · 2012-10-16
浏览524
lmtealmteaEngineerASL
好贴,收藏,学习~~~~显示全部
好贴,收藏,学习~~~~收起
2012-07-05
浏览588
wenzi5a321wenzi5a321软件架构设计师上海派拉软件
主动接收:package com.sany.mq; import java.io.IOException; 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 ...显示全部
主动接收:
package com.sany.mq;
import java.io.IOException;
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;
public class MQGeter {
 private static final String MQ_MANAGER = "QM2";
 private static final String MQ_HOST_NAME = "10.0.16.15";
 private static final String MQ_CHANNEL = "service2"; // "SYSTEM.DEF.SVRCONN";//
 private static final String MQ_QUEUE_NAME = "portal_hrm";
 private static final int MQ_PROT = 1434;
 private static final int MQ_CCSID = 1280;
 private MQQueueManager qMgr;
 private void getConnMQmanager() {
  MQEnvironment.hostname = MQ_HOST_NAME;// MQ服务器IP
  MQEnvironment.channel = MQ_CHANNEL; // 队列管理器对应的服务器连接通道
  MQEnvironment.CCSID = MQ_CCSID; // 字符编码
  MQEnvironment.port = MQ_PROT; // 队列管理器的端口号
  try {
   qMgr = new MQQueueManager(MQ_MANAGER);// 队列管理器名称
  } catch (MQException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 private void closeConnMQmanager() {
  if (qMgr != null) {
   try {
    qMgr.close();
   } catch (MQException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
 
   public void receiveMsg()   
     {   
         int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;   
         MQQueue queue = null;   
         try {   
             queue = qMgr.accessQueue(MQ_QUEUE_NAME, openOptions, null, null,null);   
                
             System.out.println("该队列当前的深度为:"+queue.getCurrentDepth());   
             System.out.println("===========================");   
             int depth = queue.getCurrentDepth();   
             //将队列的里的消息读出来   
             while(depth-->0)   
             {   
                 MQMessage msg = new MQMessage();// 要读的队列的消息   
                 MQGetMessageOptions gmo = new MQGetMessageOptions();   
                 queue.get(msg, gmo);
                 System.out.println("消息为:"+msg.readUTF());   
                 System.out.println("---------------------------");   
             }   
         } catch (MQException e) {   
             // TODO Auto-generated catch block   
             e.printStackTrace();   
         } catch (Exception e) {   
             // TODO Auto-generated catch block   
             e.printStackTrace();   
         }finally{   
             if(queue!=null){   
                 try {   
                     queue.close();   
                 } catch (MQException e) {   
                     // TODO Auto-generated catch block   
                     e.printStackTrace();   
                 }   
             }   
         }   
     }   
 public static void main(String[] args) {      
  MQGeter mm = new MQGeter();      
        mm.getConnMQmanager();
        mm.receiveMsg();
        mm.closeConnMQmanager();      
    }   
}
收起
互联网服务 · 2012-05-11
浏览580

提问者

wenzi5a321
软件架构设计师上海派拉软件
擅长领域: 中间件esb软件开发

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2012-05-11
  • 关注会员:1 人
  • 问题浏览:19477
  • 最近回答:2013-06-09
  • X社区推广