研究MQ很长时间了, 每个类,方法,都查了很长时间,在此总结一下!

Java编写访问MQ的程序

1、MQQueueManager―――队列管理器访问类 

常用方法: 
public MQQueueManager(String queueManagerName)―――建立一个管理器实例

创建队列管理器有两种方式:

1:绑定方式,这种方式要求MQ服务器与应用程序同属一台服务器,效率比较高。

2:客户机方式:这种方式应用程序和MQ服务器可以不在同一台服务器上,但是要考虑到MQ权限的问题,尤其是MQ7.5之后,权限变的很复杂,慎重对待。
注:如果使用绑定的方式则可以直接创建一个新的队列管理器实例。但是在某些平台下这样直接创建会出错,必须采用MQClient的方式进行连接。此时需要先定义服务通道,端口,服务名等环境变量,再创建一个队列管理器实例。如:

  1. MQEnvironment.hostname = "IP地址";
  2. MQEnvironment.channel = "channelname";
  3. MQEnvironment.port = port ;
  4. MQEnvironment.CCSID = CCSID;
  5. MQQueueManager qMgr = new MQQueueManager(hostname);

其中hostname表示队列管理器所在的机器地址(一般在本地则填localhost或127.0.0.1)。

port就是队列管理器的侦听端口。

Channel定义访问的服务器通道名(需要自己在队列管理器中先定义,其方法类似与一般通道的定义,不过类型是服务器通道)

public bool isConnected()―――返回队列管理器是否在连接状态

public synchronized void disconnect()―――断开队列管理器的连接

2、MQQueue―――队列访问类

常用方法:
通常MQQueue实例的生成通过调用MQQueueManager的accessQueue方法类实例化。

public synchornized MQQueue accessQueue(String QueueName,int openOptions)―――返回一个连接队列的实例(类名为:MQQueue)

常用方法: 
public synchronized void get(MQMessage message,MQGetMessageOptions gmo)―――从队列管理器读取一条

消息通过message实例返回。MQGetMessageOptions的用法下面再详述。

public synchronized void put(MQMessage message,MQPutMessageOptions pmo)―――往队列管理器放入一条

消息 MQPutMessageOptions的用法下面再详述

public synchronized void close()―――关闭队列的连接

3.openOptions---队列的打开方式

常用值有: 
MQC.MQOO_FAIL_IF_QUIESCING―――如果队列管理器停止则返回失败

MQC.MQOO_OUTPUT――――以写方式打开队列 
MQC.MQOO_INPUT_AS_Q_DEF―――以队列默认读取方式打开队列 使用的时候可以采用与操作来实现多种打开队列方式,

MQC.MQOO_BROWSE;――――以浏览方式打开队列

MQC.MQGMO_BROWSE_NEXT; ――――浏览下一个消息

如: 
int openOptions = MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_AS_Q_DEF; 表示以读、写方式打开队列

4.MQMessage―――消息操作类 常用方法:

public MQMessage()―――默认构造函数 
public int getDataLength()―――返回可读取的消息的长度(以byte作为单位) 
public void readFully(byte b[])―――读取消息到数组b中,长度以b的数组长度为准

属性:

format = MQC.MQFMT_STRING;

msg.characterSet = ccsid;//字符集
msg.encoding = ccsid;//写的字符集

一般读取消息的操作为:

  1. MQMessage message = new MQMessage(); ….
  2. int length = message.getDataLength();
  3. byte buffer[] = new byte[length];
  4. message.readFully(buffer);

public void write(byte b[])―――把指定的字节数组写入消息 
一般写消息的操作为:

  1. byte[] buffer = “asdasdad”.getBytes();
  2. MQMessage message = new MQMessage(); ….
  3. message.write(buffer);
  4. queue.put(message….

5.MQGetMessageOptions―――取消息操作选项

常用方法: 
public MQGetMessageOptions()―――默认构造函数

public int options―――操作选项(位操作) 
public int matchOptions―――条件选项(按照某种条件获取消息) 
public int waitInterval―――等待时长(单位:毫秒)仅当options选项有MQC.MQGMO_WAIT才有效

6.MQPutMessageOptions―――放消息操作选项

常用方法: 
public MQPutMessageOptions()―――默认构造函数

public int options―――操作选项(位操作)

7.MQ自带连接池

MQ队列管理器有自己的连接池,可以使用连接池获得连接

我们可以使用的MQ自己的默认连接池

MQPoolToken token=MQEnvironment.addConnectionPoolToken();

这样就会把在本线程中对队列管理器的连接纳入到了MQ自带的线程管理机制中(qm.disconnect()实际上就是将qm的连接重新放回池中 qm= new MQQueueManager()会去池里找一个可用的连接赋给qm)

因为队列管理器是选择了侦听端口,可以使用netstat -an |grep 9004 看到连接到这个队列管理器上连接.

MQ--API总结的更多相关文章

  1. JAVA MQ API方式通信采用Binding MQ Server方式

    package com.mqapi;   /**  * @modified by actorai E-mail:actorai@163.com  * @version 创建时间:2010-9-15 * ...

  2. ActiveMQ学习(三)——MQ的通讯模式

    1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一.一对多.多对多.多对一等多种配置方式,支持树状.网状等多种拓扑结构. 2) 多点广播:MQ适用于不同类型的应用.其中重要的,也是正 ...

  3. MQ基本概念

    MQ的基本概念 1) 队列管理器 队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务. 2) 消息 在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并 ...

  4. 消息中间件及WebSphere MQ入门(转载)

    消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待 ...

  5. MQ基础概念和介绍

    一.中间件 MQ是一种中间件产品,至于什么是中间件,中间件能干什么,参见以下链接: http://baike.baidu.com/view/23710.htm 二.WebSphere MQ的原理 We ...

  6. trove design翻译

    trove的设计 高水平的描述 trove的目的是支持单租户数据库,在一个nova的实例中.没有限制nova是如何配置的,因为trove与其他OpenStack组件纯粹通过API. Trove-api ...

  7. ActiveMQ-为什么需要消息中间件?

    消息中间件的优势 UNIX的进程间通信就开始运用消息队列技术,一个进程将数据写入某个特定的队列中,其它进程可以读取队列中的数据,从而实现异步通信.对于如今的分布式系统,消息队列已经演变为独立的消息中间 ...

  8. Massive Collection Of Design Patterns, Frameworks, Components, And Language Features For Delphi

    Developer beNative over on GitHub has a project called Concepts which is a massive collection of Del ...

  9. Rocket Mq 常用API 及简单运维

    RocketMQ 常用API 消息 消息消费模式 消息消费模式由消费者来决定,可以由消费者设置MessageModel来决定消息模式. 消息模式默认为集群消费模式 consumer.setMessag ...

  10. Rabbit MQ 客户端 API 开发

    项目开始 第一步首先需要引入对应的 jar 包 <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> & ...

随机推荐

  1. 九度oj 1001 A+B for Matrices 2011年浙江大学计算机及软件工程研究生机试真题

    题目1001:A+B for Matrices 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15235 解决:6172 题目描述: This time, you are supposed ...

  2. 栈C++实现

    栈的核心是LIFO(Last In First Out),即后进先出 出栈和入栈只会对栈顶进行操作,栈底永远为0.如果是入栈,要将入栈元素赋值给栈数组,再将栈顶上移一位:出栈时要先将栈顶下移一位,再将 ...

  3. OpenGL初识

    OpenGL 概念 OpenGL提供的是一系列接口, 它是指一个规范, OpenGL规范严格规定了每个函数该如何执行, 以及它们的输出值, 具体的实现是由各个显示设备厂商, 它作为本地系统库直接运行在 ...

  4. spring mvc如何优雅的使用fastjson

    1. 在spring mvc中配置fastjson <!-- 设置配置方案 --> <mvc:annotation-driven> <!-- 设置不使用默认的消息转换器 ...

  5. isPrototypeOf、instanceof、hasOwnProperty函数整理

    isPrototypeOf 作用:检测一个对象是否是另一个对象的原型.或者说一个对象是否被包含在另一个对象的原型链中 var p = {x:1};//定义一个原型对象 var o = Object.c ...

  6. 2017年12月13日 LinQ用法基本的增删改查

    LinQ是什么? LinQ是语言集成的查询,是用于C#跟Vb的扩展语言 LinQ的用法 新建一个App_Code文件夹,在文件夹下添加一个数据LinQ to SQL类,可以直接直接点击服务器管理器然后 ...

  7. [android] 界面切换的简单动画

    1. 新建个位移动画的xml文件 Activity中开启动画 使用AnimationUtils类加载动画资源文件 left_to_right.xml <?xml version="1. ...

  8. No.1一步步学习vuejs 环境配置安装篇

    一 安装与配置 需要安装node.js和 nmp管理器http://nodejs.cn/安装完后测试输入命令查看版本验证 node -v //查看node.js的版本 npm -v //查看 由于有些 ...

  9. Java CAS总结

    文章目录 1. CPU指令对CAS的支持(CPU的cas指令是原子的) 或许我们可能会有这样的疑问,假设存在多个线程执行CAS操作并且CAS的步骤很多,有没有可能在判断V和E相同后,正要赋值时,切换了 ...

  10. maven(5)--依赖特性

    依赖的子标签中有scope,常用值有compile.provide.test.runtime compile:编译范围有效,即编译和打包时都会将这个依赖存储 provide:编译测试有效,但是打包是将 ...