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(); } }
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)
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(); } }收起