MQ--API总结

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

Java编写访问MQ的程序

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

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

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

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

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

[html] view plain copy

  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;//写的字符集

一般读取消息的操作为:

[html] view plain copy

  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[])―――把指定的字节数组写入消息 
一般写消息的操作为:

[html] view plain copy

  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 看到连接到这个队列管理器上连接.

时间: 2024-10-14 12:01:18

MQ--API总结的相关文章

MQ基础概念和介绍

一.中间件 MQ是一种中间件产品,至于什么是中间件,中间件能干什么,参见以下链接: http://baike.baidu.com/view/23710.htm 二.WebSphere MQ的原理 Websphere MQ是IBM的商业通讯中间件(Commercial Messaging Middleware).Websphere MQ提供一个具有工业标准.安全.可靠的消息传输系统.它的功能是控制和管理一个集成的商业应用,使得组成这个商业应用的多个分支程序(模块)之间通过传递消息完成整个工作流程.

WebSphere MQ&&Active MQ

WebSphere MQ&&ActiveMQ WebSphere MQ 1.  中间件处于应用软件与系统软件之间,是一种以自己的复杂换取企业应用简单化的可复用的基础软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享.功能共享的目的. 2.  三种通信技术: RPC(remote process call):同步: CPI-C:同步: MQI(message queue interface):异步通信方式,通信的方式与传送协议无关. 3.

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

1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一.一对多.多对多.多对一等多种配置方式,支持树状.网状等多种拓扑结构. 2) 多点广播:MQ适用于不同类型的应用.其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(Destination List).可以使用一条MQ指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息.MQ不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ将消息

WebSphere MQ简介

1.中间件 中间件处于应用软件和系统软件之间,是一种以自己的复杂换取企业应用简单化的可复用的基础软件.在中间件产生以前,应用软件直接使用操作系统.网络协议和数据库等开发,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计和管理,复杂多变的网络环境,数据分散处理带来的不一致性,性能和效率.安全问题等等.这些问题与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力.于是,有人提出将应用软件所要面临的共性问题进行提炼.抽象,在操作系统之上再形成一个可复用的部分,供成

如何创建一条可靠的实时数据流

数据的生命周期一般包含"生成.传输.消费"三个阶段.在有些场景下,我们需要将数据的变化快速地反馈到在线服务中,因此出现了实时数据流的概念.如何衡量数据流是否"可靠",不同的业务之间关注的指标差别很大.根据对大量业务场景的观察,我们发现对数据流要求最严格的业务场景往往和钱有关. 在广告平台业务中,广告的预算和消费数据. 广告主修改广告预算,投放系统首先将新的预算更新到数据库,然后需要将其同步到检索端.检索端将广告的预算和已消费金额作对比,重新决定广告是否有效.如果没有

trove design

trove的设计 高水平的描述 trove的目的是支持单租户数据库,在一个nova的实例中.没有限制nova是如何配置的,因为trove与其他OpenStack组件纯粹通过API. Trove-api trove-api服务提供一个支持JSON和XML的RESTful API提供和管理大量的实例. REST-ful组件 入口点——Trove/ bin / trove-api 使用一个WSGI发射器配置,在Trove/etc/trove/api-paste.ini 定义过滤器的管道;authtok

消息队列入门(二)消息队列的开源实现

消息队列入门(二)消息队列的开源实现 关于AMQP AMQP 是 Advanced Message Queuing Protocol,即高级消息队列协议.AMQP不是一个具体的消息队列实现,而 是一个标准化的消息中间件协议.目标是让不同语言,不同系统的应用互相通信,并提供一个简单统一的模型和编程接口.目前主流的ActiveMQ和RabbitMQ都支持AMQP协议. AMQP相关的角色和职责 Producer 消息生产者 一个给exchange发送消息的程序,发送方式大致是:它首先创建一个空消息,

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

消息中间件的优势 UNIX的进程间通信就开始运用消息队列技术,一个进程将数据写入某个特定的队列中,其它进程可以读取队列中的数据,从而实现异步通信.对于如今的分布式系统,消息队列已经演变为独立的消息中间件产品,相比于RPC同步通信的方式来说有几个明显的优势: 低耦合,不管是程序还是模块之间,使用消息中间件进行间接通信. 消息的顺序性,消息队列可以保证消息的先进先出. 消息可靠传输,持久化的存储使得消息只有在被消费之后才会删除. 异步通信能力,相对于RPC来说,异步通信使得生产者和消费者得以充分执行

spring cloud延时队列的使用

用户购买一笔订单,需要在订单的有效截止时间前一定时间,提醒用户去使用.到达有效结束时间,将订单设置为失效.这时候可以用延时队列可以很好的解决,用户下单之后,在有效期前发送一条提醒用户去使用的消息,和一条订单已经失效的消息. 入口 /** * 爆品助力状态提醒 * * @param req 爆品助力失败 */ @RequestMapping(path = "/mq/product/sendProductHelpStatusMessage", method = RequestMethod.

酷我音乐API

今天把酷我音乐API分享给大家: 歌曲搜索API:http://search.kuwo.cn/r.s?all={0}&ft=music& itemset=web_2013&client=kt&pn={1}&rn={2}&rformat=json&encoding=utf8 {0}=需要搜索的歌曲或歌手 {1}=查询的页码数 {2}=当前页的返回数量 例子:http://search.kuwo.cn/r.s?all=周杰伦&ft=music&a