MQ作为一种中间件还是不错的,可以由一个系统发送一些消息给MQ Server,然后另外一个系统来取得这些消息。比较方便的实现不同系统、不同语言间的通信。

MQ Server可以进行消息的排队、缓存等。

具体MQ Server的配置我就不介绍了,可以去IBM的网站下载一个试用版试试看。

下面是一个收发的简单的小例子,具体意思看里面的注释。

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;

/**//*
 * 可以在MQ的资源管理器的某一个队列上放入测试消息、浏览消息等
 * 可以放入多条消息,按先进先出的方式取得
 */
public class MQTest {
    
    private String qManager;// QueueManager名

    private MQQueueManager qMgr;

    private MQQueue qQueue;
    
    String HOST_NAME;
    
    int PORT=0;

    String Q_NAME;
    
    String CHANNEL;
    
    int CCSID;
    
    String Msg;
    
    public void init(){
            
        try {
            HOST_NAME="192.168.88.169";
            PORT=1414;
            qManager="QM_yfgaochun";
            Q_NAME="QM_NAME1";
            CHANNEL="S_yfgaochun";
            CCSID=1381; //表示是简体中文, CCSID的值在AIX上一般设为1383,如果要支持GBK则设为1386,在WIN上设为1381。
            
            Msg = "MQ测试发送Gao";
            //System.out.println(Msg);
            
            MQEnvironment.hostname = HOST_NAME; //安裝MQ所在的ip address
            MQEnvironment.port=PORT; // TCP/IP port
            
            MQEnvironment.channel=CHANNEL;
            MQEnvironment.CCSID=CCSID;
            
            qMgr = new MQQueueManager(qManager);
            
/**//*            try {
                XADataSource ds = null;
                Connection con = (Connection)qMgr.getJDBCConnection(ds);
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }*/
            
            //int qOptioin = MQC.MQOO_INQUIRE | MQC.MQOO_OUTPUT; 发送时使用
            //int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT; 接收时使用
            int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE | MQC.MQOO_OUTPUT;

            qQueue = qMgr.accessQueue(Q_NAME, qOptioin);
            
        } catch (MQException e) {
            System.out
                    .println("A WebSphere MQ error occurred : Completion code "
                            + e.completionCode + " Reason Code is "
                            + e.reasonCode);
        } 
    }
    
    void finalizer() {
        try {
            qQueue.close();
            qMgr.disconnect();
        } catch (MQException e) {
            System.out
                    .println("A WebSphere MQ error occurred : Completion code "
                            + e.completionCode + " Reason Code is "
                            + e.reasonCode);
        }
    }

    /**//*
     * 取过一次,下次就没有了
     */
    public void GetMsg() {
        try {
            MQMessage retrievedMessage = new MQMessage();

            MQGetMessageOptions gmo = new MQGetMessageOptions();
            gmo.options += MQC.MQPMO_SYNCPOINT;

            qQueue.get(retrievedMessage, gmo);

            int length = retrievedMessage.getDataLength();

            byte[] msg = new byte[length];

            retrievedMessage.readFully(msg);

            String sMsg = new String(msg);
            System.out.println(sMsg);

        }catch (RuntimeException e)
            e.printStackTrace();
        }catch (MQException e) {
            if (e.reasonCode != 2033) //没有消息
            {
                e.printStackTrace();
                System.out
                        .println("A WebSphere MQ error occurred : Completion code "
                                + e.completionCode
                                + " Reason Code is "
                                + e.reasonCode);
            }
        } catch (java.io.IOException e) {
            System.out
                    .println("An error occurred whilst to the message buffer "
                            + e);
        }
    }
    
    public void SendMsg(byte[] qByte) {
        try {
            MQMessage qMsg = new MQMessage();
            qMsg.write(qByte);
            MQPutMessageOptions pmo = new MQPutMessageOptions();
            
            qQueue.put(qMsg, pmo);

            System.out.println("The message is sent!");
            System.out.println("\tThe message is " + new String(qByte,"GBK"));
        } catch (MQException e) {
            System.out
                    .println("A WebSphere MQ error occurred : Completion code "
                            + e.completionCode + " Reason Code is "
                            + e.reasonCode);
        } catch (java.io.IOException e) {
            System.out
                    .println("An error occurred whilst to the message buffer "
                            + e);
        }

    }
    /** *//**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MQTest mqst = new MQTest();        
        mqst.init();
        try {
            mqst.SendMsg(mqst.Msg.getBytes("GBK"));
            //mqst.GetMsg();
        } catch (Exception e) {
            e.printStackTrace();
        }
        mqst.finalizer();
    }

}

IBM MQ 使用一例相关推荐

  1. java连接ibm mq

    http://blog.csdn.net/liaomin416100569/article/details/7254191 首先 打开 IBM websphere MQ 管理器 添加一个队列管理器 名 ...

  2. IBM MQ 7.1在windows和linux上安装

    一.测试环境说明 本次测试linux端和windows端主要参数配置如下: Linux: 操作系统版本:SUSE Linux Enterprise Server 10 SP4    32bit MQ版 ...

  3. java 日期年度 35变2035_连接IBM MQ原因码报2035的错误解决办法

    我们的系统使用了ibm mq,用户用来向国家局上报文件和接收文件,前几天用户说上报一直不成功.由于 开发这块程序的人已经辞职了,我觉定在我的机器部署一套,研究一下.我的思路: 在我的机器上安装mq,建 ...

  4. IBM MQ简单开发和应用

    IBM MQ经常被一些政府公共部门,银行等企业用来做数据传输和报文收发,在互联网应用的开发中较少见到,属于一种比较老旧的应用.这里以IBM Websphere MQ 7.5版本为例介绍一下MQ的的简单 ...

  5. IBM MQ 搭建测试环境并测试消息的发送和接收

    一,说明 MQ基于Linux环境的安装比较简单,读者可以去网上自行搜索. 本文主要在于MQ队列管理器相关的部分. OS Version: Red Hat Enterprise Linux Server ...

  6. IBM MQ 9.2.4 笔记大全

    IBM MQ note author: joey_lee 官方文档 将测试消息放入本地队列 https://www.ibm.com/docs/en/ibm-mq/9.2?topic=queue-put ...

  7. IBM MQ 基本操作

    IBM MQSeries使用指南 随着计算机网络和分布式应用的不断发展,远程消息传递越来越成为应用系统中不可缺少的组成部分.商业消息中间件的出现保证了消息传输的可靠性,高效率和安全性,同时也减少了系统 ...

  8. php ibm mq,php linux IBM MQ安装以及php对接

    php linux IBM MQ安装以及php对接 输入信息test,双击回车就结束了 获取队列内容: $mqcno=array("Version"=>MQSERIES_MQ ...

  9. java ibm 2035,C# java 连接 IBM MQ时出现 2035 或 2013认证错误的解决方法

    当C# 或 java 连接 IBM MQ 是出现 2035 或 2013的错误时 java的错误提示: com.ibm.msg.client.jms.DetailedJMSSecurityExcept ...

最新文章

  1. C 回顾 volatile 和 register 修饰符
  2. jquery生成二维码
  3. 手把手教你入门和实践特征工程 的全方位万字笔记,附代码下载
  4. FastJsonUtils 需要fastjson
  5. Projection of Tuple DataSet具体用法
  6. .Net Core HttpClient处理响应压缩
  7. 前端学习(1768):前端调试值之内存监控的原理和方法三
  8. 关于在smarty中实现省市区三级联动
  9. win7电脑浏览器证书过期的解决方法
  10. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例
  11. ZeroForums论坛正式开始测试运行
  12. 231 · 自动补全
  13. java 工具类库 Apache Commons
  14. oracle去掉重复记录语句
  15. Unity3D开发学习
  16. jQuery - 滚动条插件 NiceScroll 使用详解(滚动条美化)
  17. QPSK调制解调原理(IQ调制)
  18. mysql数据库保存微信emoji表情
  19. ffmpeg dst时间_如何确保您的小工具自动更改DST的时间
  20. 驾驶证上的照片有具体要求吗?这几点需要注意

热门文章

  1. timer定时器_拾遗Timer定时器
  2. 办公室计算机网络使用情况,企事业单位办公网络的现状及解决方案.doc
  3. 将String类型的Json字符串转化对象或对象数组
  4. Requires: libstdc++.so.6(GLIBCXX_3.4.15)
  5. 11.MapReduce第1部分
  6. error C2665: “AfxMessageBox”
  7. Grafana + Zabbix --- 部署分布式监控系统
  8. 如何创建并运行java线程
  9. Office word中mathtype公式与LaTex公式代码互转
  10. matplotlib-绘制精美的图表