研究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. poj 1284 Primitive Roots(未完)

    Primitive Roots Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3155   Accepted: 1817 D ...

  2. input输入提示历史记录

    一般便于用户的输入习惯,我们都会提示历史消息,让用户有更好的使用体验,以前可能比较多朋友会用js来实现,现在HTML5的datalist可以轻松帮我们实现这个功能!只需以下几行代码 <!doct ...

  3. AtCoder Grand Contest 006 F - Blackout

    Description 在 \(n*n\) 的棋盘上给出 \(m\) 个黑点,若 \((x,y)\),\((y,z)\) 都是黑点,那么 \((z,x)\) 也会变成黑点,求最后黑点的数量 题面 So ...

  4. 标准webservice调用

    现代定义的webservice一般都倾向于restfull风格的http请求,但工作中还是会遇到前辈们写的时代代码. 我们更倾向于封装代码来调用,而不是服务引用.请看: Service.asmx服务的 ...

  5. Eclipse 常见问题总结

    添加包 1.build path 直接添加 2.在windows-->preferences -> Java -> build path -> classpath variab ...

  6. WPF中使用ObjectDataProvider绑定方法

    ObjectDataProvider提供了绑定任意.net类型的功能,具体功能如下: 1.ObjectDataProvider提供了绑定任意CLR类型的公嫩那个. 2.它可以再XAML中利用生命史的语 ...

  7. 三:Springboot整合Redis

    一:springboot整合redis redis版本:3.0.0 运行环境:linux 1.安装redis 1.1安装gcc yum install gcc-c++ 1.2解压redis.3.0.0 ...

  8. http所有请求头在Console中打印

    1.目标:将http中的请求头全部打印在Console中 2.基本语句 //1.获得指定的头 String header = response.getHeader("User-Agert&q ...

  9. docker 安装ElasticSearch的中文分词器IK

    首先确保ElasticSearch镜像已经启动 安装插件 方式一:在线安装 进入容器 docker exec -it elasticsearch /bin/bash 在线下载并安装 ./bin/ela ...

  10. 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台

    一. 开发环境 1. 点击此查看并下载需要的 Eclipse IDE for Java EE Developers 开发工具,依赖于java,推荐选用32位   2. 点击此查看并下载需要的 MySQ ...