互联网服务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同行回答

习惯丶默习惯丶默软件开发工程师新宇连邦
学习了。。。。显示全部
学习了。。。。收起
互联网服务 · 2012-06-20
浏览803
kehuan2008kehuan2008项目经理soa
消息过长的时候,readUTF()会截断数据读取readUTF的字符串消息长度为:11741,每次都是这样最长就是11741显示全部

1.jpg



消息过长的时候,readUTF()会截断数据
读取readUTF的字符串消息长度为:11741,每次都是这样最长就是11741收起
互联网服务 · 2012-05-24
浏览773
kehuan2008kehuan2008项目经理soa
             //将队列的里的消息读出来                while(depth-->0)                {     &nbs...显示全部

1.jpg

             //将队列的里的消息读出来                while(depth-->0)                {                    MQMessage msg = new MQMessage();// 要读的队列的消息                    MQGetMessageOptions gmo = new MQGetMessageOptions();                   gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;//Get messages under sync point control(在同步点控制下获取消息)                     gmo.options = gmo.options + MQC.MQGMO_WAIT;  // Wait if no messages on the Queue(如果在队列上没有消息则等待)                     gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;// Fail if Qeue Manager Quiescing(如果队列管理器停顿则失败)                     gmo.waitInterval = 10000 ;  // Sets the time limit for the wait.(设置等待的毫秒时间限制)                     queue.get(msg, gmo);                                  byte[] rawData = new byte[msg.getMessageLength()];       //先转byte                 msg.readFully(rawData);                                   //读出所有数据                 String msgstr = new String(rawData,"gb2312");                                     System.out.println("readFull读取消息:"+msgstr);                  System.out.println("实际读取出来以后字符串长度为:"+msgstr.length());                                     System.out.println("getMessageLength读取消息长度为:"+msg.getMessageLength());                 System.out.println("读取readUTF的字符串消息长度为:"+msg.readUTF().length());//这两个长度不获取出来都不太一样·                  System.out.println("---------------------------");                }   
收起
互联网服务 · 2012-05-24
浏览809
leejerleejer技术经理中国建设银行
{:3_59:}显示全部
{:3_59:}收起
互联网服务 · 2012-05-14
浏览822
lookout3lookout3软件开发工程师西安工业大学
谢谢分享!感谢!显示全部
谢谢分享!感谢!收起
互联网服务 · 2012-05-14
浏览800
sangmin214sangmin214系统工程师SS
{:2_36:}显示全部
{:2_36:}收起
系统集成 · 2012-05-12
浏览787
wenzi5a321wenzi5a321软件架构设计师上海派拉软件
通过监听接收:package com.sany.demo; import com.ibm.jms.JMSTextMessage; import com.ibm.mq.jms.JMSC; import com.ibm.mq.jms.MQQueueConnectionFactory; import javax.jms.*; import java.net.URI; import java.util.logging.Level; import java.util.logging.Logger; public...显示全部
通过监听接收:
package com.sany.demo;
import com.ibm.jms.JMSTextMessage;
import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQQueueConnectionFactory;

import javax.jms.*;
import java.net.URI;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Receiver implements MessageListener {
//    private static Logger logger = Logger.getLogger(Receiver.class.getName());
        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 static void main(String[] args) {
        try {
            MQQueueConnectionFactory rv = new MQQueueConnectionFactory();
            rv.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
            rv.setHostName(MQ_HOST_NAME);
            rv.setQueueManager(MQ_MANAGER);
            rv.setChannel(MQ_CHANNEL);
            rv.setPort(MQ_PROT);
            QueueConnection conn  = rv.createQueueConnection("wbiadmin","wbiadmin");;
            QueueSession session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            Queue queue = session.createQueue(MQ_QUEUE_NAME);
            QueueReceiver receiver = session.createReceiver(queue);
            Receiver instance = new Receiver();
            receiver.setMessageListener(instance);
            conn.start();
            int count = 0;
            while (count < 1000) {
                Thread.sleep(30 * 1000);
                count++;
            }
            //shutdown
            receiver.close();
            session.close();
            conn.close();
        } catch (Exception e) {
//            logger.log(Level.WARNING, "Exception: ", e);
                e.printStackTrace();
        }
    }

    @Override
    public void onMessage(Message message) {
        if (message == null)
            return;
        if (message instanceof JMSTextMessage) {
            try {
                System.out.println(((JMSTextMessage) message).getText());
            } catch (JMSException e) {
                e.printStackTrace();
            }
        } else {
            //you need defined handle for different message format.
        }
    }
}
收起
互联网服务 · 2012-05-11
  • 请问,我在Eclipse中运行你的MQsender的那个程序,为什么出现这样的错误呢:Exception in thread "Thread-0" java.lang.NoClassDefFoundError: javax/resource/ResourceException at com.ibm.mq.MQEnvironment.(MQEnvironment.java:490) at MyMQ.MQSender.run(MQSender.java:23) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: javax.resource.ResourceException at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 3 more
    2016-07-28
masklivemasklive项目经理dake
监听的程序在tomcat下是好的,但是在was下就不行,是不是有这个情况?显示全部
监听的程序在tomcat下是好的,但是在was下就不行,是不是有这个情况?收起
互联网服务 · 2013-06-09
浏览1034
lykeylykey开发工程师jinze
回复 20# wenzi5a321 上面那个 截图18# 怎么解决啊? 那个还没有解决,就是出现奇怪字符显示全部
回复 20# wenzi5a321

上面那个 截图18# 怎么解决啊? 那个还没有解决,就是出现奇怪字符收起
金融其它 · 2013-06-08
浏览1034
wenzi5a321wenzi5a321软件架构设计师上海派拉软件
回复 19# lykey 昨天晚上没上网,你自己解决了更好啊,印象会深刻得多。显示全部
回复 19# lykey

昨天晚上没上网,你自己解决了更好啊,印象会深刻得多。收起
互联网服务 · 2013-06-08
浏览1044

提问者

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

相关问题

相关资料

相关文章

问题状态

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