文档章节

WebSphere MQ基础命令

wersdffg
 wersdffg
发布于 2014/10/09 17:17
字数 2348
阅读 2450
收藏 6

基础概念
对于MQ,我们需要知道4个名词:队列管理器、队列、消息、通道;对于编程设计人员,通常更关心消息和队列,对于维护管理人员,通常 会更关心队列管理器和通道。如果我们把队列管理器比作是数据库,那么队列就是其中的一张表,消息就是表中的一条记录。
队列:我们可以简单地把队列看成一个容器,用于存放消息。

队列管理器:队列管理器构建了独立的 MQ 的运行环境,它是消息队列的管理者,用来维护和管理消息队列。

消息:MQ中的最小对象;默认情况下,消息缺省可以达到 4MB。消息可以分成持久消息和非持久消息。所谓“持久”的 意思,就是在MQ 队列管理器重启动后,消息是否仍然能保持。持久的消息写入或读出队列的同时会在 Log 中记录,所以性能上比非持久消息差不少。

通道:通道则是两个队列管理器之间的一种单向的点对点的通信连接, 消息在通道中只能单向流动。队列管理器之间的通信是通过配置通道来实现 的,通道两侧的队列管理器对这个通道的相关参数应该能对应起来。在通道上可以配置不同的通信协议,这样就使得编程接口与通信协议无关。通道两端的 配置必须匹配,且名字相同,否则无法连通。

RUNMQSC:命令行交互界面管理工具;作为维护人员的我们,与MQ打交道有两种方式,一种是通过MQ提供的二进制命令工具(在mq安装目录的bin目录下),另一种方式则是通过命令行交互管理工具;这二者在功能上有很多是重合的,但并非完全可替代;RUNMQSC是一个通用的 MQ 对象管理工具,使用 MQSC命令集可以对 MQ 对象进行全方位的管理,也是各种管理方式最直接、最全面的一种。RUNMQSC 运行的命令集称为 MQSC (MQ Script Command)";在 RUNMQSC 中大小写无关,所有的命令会先转换成全大写再提交执行。所以如果要 表示大小相关的字串,比如对象名,则用引号将字串包住。输入以下命令启动MQSC命令:runmqsc [queueManagerName]


 

--查看MQ版本--

dspmqver

--查看队列状态--
dspmq

--创建队列管理器--
crtmqm -q ECIS_QM

--删除队列管理器--
dltmqm ECIS_QM

--启动队列管理器--
strmqm ECIS_QM

--关闭队列管理器--
endmqm -i ECIS_QM 立即停止
endmqm -p ECIS_QM 强制停止

--运行队列管理器--
runmqsc ECIS_QM

--定义监听器--
DEFINE LISTENER(LSR_4_ECIS_QM) TRPTYPE(TCP) PORT(1616) CONTROL(QMGR) REPLACE
START LISTENER(LSR_4_ECIS_QM)

--定义通道--
DEFINE CHANNEL(ECIS.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm') REPLACE

--启动通道--
runmqchl –c ChlName –m ECIS_QM

--启动侦听--
runmqlsr –t TCP –p 1616 –m ECIS_QM
endmqlsr -m ECIS_QM

--定义队列--
DEFINE QL(Q_SVC2ADP_4_TELNET) REPLACE
DEFINE QL(Q_SVC2ADP_4_JDBC) REPLACE
DEFINE QL(Q_SVC2ADP_4_HTTP) REPLACE
DEFINE QL(Q_SVC2ADP_4_SOCKET) REPLACE

--删除队列--
delete QL(Q_SVC2ADP_4_TELNET)

--查看监听器--
display listener (LSR_4_ECIS_QM)

--查看通道--
dis chs(*)

--查看通道--
display ql(*) [all]

--查看队列深度--
display ql(Q_SVC2ADP_4_HTTP) curdepth

--清除队列消息--
clear ql(Q_SVC2ADP_4_HTTP)

--查看CCSID--
display qmgr all

--修改CCSID--
ALTER QMGR [FORCE] CCSID(5488)

 

逻辑定义
##################################################
./JMSAdmin

DELETE QCF(T_ECIS_QCF)

DELETE Q(T_ECIS_Q_SVC2ADP_TELNET) 
DELETE Q(T_ECIS_Q_ADP2SVC_TELNET)
DELETE Q(T_ECIS_Q_SVC2ADP_JDBC)
DELETE Q(T_ECIS_Q_ADP2SVC_JDBC)

DELETE Q(T_ECIS_Q_SVC2ADP_HTTP)
DELETE Q(T_ECIS_Q_ADP2SVC_HTTP)
DELETE Q(T_ECIS_Q_SVC2ADP_SOCKET)
DELETE Q(T_ECIS_Q_ADP2SVC_SOCKET)

DEFINE QCF(T_ECIS_QCF) DESC() TRAN(CLIENT) HOST(10.151.128.13) QMGR(T_ECIS_QM) CHAN(T_ECIS.SVRCONN) PORT(2626) CCSID(5488)

DEFINE Q(T_ECIS_Q_SVC2ADP_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_TELNET) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_TELNET) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_JDBC) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_JDBC) CCSID(5488)

DEFINE Q(T_ECIS_Q_SVC2ADP_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_HTTP) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_HTTP) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_SOCKET) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_SOCKET) CCSID(5488)

 

 

 

 


WebSphere MQ常用命令及配置
################################################## 
//创建本地队列Q
DEFINE   QLOCAL (Q)
//将本地队列Q 的最大深度设置为5
ALTER QLOCAL (Q) MAXDEPTH(5)
//重新创建本地队列Q 如果Q已经存在,则将其全部属性重置为缺省属性
DEFINE QLOCAL (Q) REPLACE
//创建远程队列
DEFINE QREMOTE(QRNAME) RNAME(AAA) RQMNAME(QMGRNAME) XMITQ(QTNAME)
//创建传输队列
define qlocal(CLV_HQ_TRAN) usage(xmitq) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(REV_CLV) TRIGTYPE(EVERY) TRIGGER REPLACE
//创建接收端通道C
DEFINE CHANNEL(C) CHLTYPE(RCVR)
//创建发送方通道C ,连接对方的IP为10.10.10.10  端口为1414 通道连接的传输队列为XQ
DEFINE CHANNEL(C) CHLTYPE(SDR) CONNAME(’10.10.10.10 (1414)’) XMITQ(XQ)
//创建请求方通道
DEFINE CHANNEL(D) CHLTYPE(RQSTR) CONNAME(’10.10.10.10 (1414)’)
//创建服务器通道
DEFINE CHANNEL (D) CHLTYPE(SVR) xmitq (XQ1)
//创建服务器连接通道
DEFINE CHANNEL(E) CHLTYPE(SVRCONN)  REPLACE

//显示所有远程队列
display qremote (*)
//显示所有通道
Display channel (*)

//定义死信队列
DEFINE QLOCAL(QUEUE) DEFPSIST(YES) REPLACE

//设定队列管理器的死信队列
ALTER QMGR DEADQ(QUEUE)

设置MaxChannels和MaxActiveChannels属性(最大连接数)
##################################################
MaxChannels和MaxActiveChannels分别代表队列管理器允许配置的通道的最大个数和允许同时运行的通道的个数,MaxChannels的缺省值是100,MaxActiveChannels的缺省值与MaxChannels相同。如果您的并发通道连接个数超过了100,您需要修改这两个参数。这对于大并发的Client/Server间通讯尤为重要。
在unix平台,修改qm.ini文件,添加如下所示(路径:/var/mqm/qmgrs/HQ_SVR): 
Channels:
MaxChannels = 3000   (最大通道数)
MaxActiveChannels = 3000   (最大活动通道数)
PipeLineLength=2
AdoptNewMCA=ALL
然后重启MQ

 

 

 

 


//定义持久性队列:
DEFINE QLOCAL(QNAME) DEFPSIST (YES) REPLACE

传输队列管理
##################################################
1:定义传输队列
DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ)
注:
Q_TRANSFER:传输队列名

下面定义一个输入队列并带触发器
DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ) DEFPSIST(YES)  INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(DP_RCHANNEL) REPLACE
注:
参数1:传输队列名称(Q_TRANSFER)
参数5:触发器数据(DP_RCHANNEL),也就是触发后要启动的通道。

2:在传输入队列上定义触发器
DPCIS_Q_TRANSFER:传输队列
触发器数据:DP_RCHANNEL,即:发送通道,触发时启动该通道
alter qlocal(DPCIS_Q_TRANSFER) TRIGDATA('DP_RCHANNEL') TRIGTYPE(every) TRIGGER initq('SYSTEM.CHANNEL.INITQ')

远程队列管理
##################################################
通过输入以下命令来定义远程队列定义:
define qremote(Q1) rname(Q1) rqmname(QM_APPLE) xmitq(QM_APPLE)
注:
参数1:队列名称(发送方远程队列名)
参数2:远程队列(接收方的本地接收队列名)
参数3:远程队列管理器(接收方队列管理器名)
参数4:传输队列(发送方传输队列名)

通道管理
##################################################
1:创建接收方通道
DEFINE CHANNEL(SDR_ TEST)  CHLTYPE(RCVR)  REPLACE 
define channel(Q_R_CHANNEL2) chltype(RCVR) replace
注:
参数1:接收方通道名称
replace:表示有该通道了替换

2:创建发送方通道 
DEFINE CHANNEL(SDRNAME)  CHLTYPE(SDR)  CONNAME (‘100.100.100.215(1418)’)  XMITQ(QTNAME)  REPLACE
其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

define channel(DP_RCHANNEL) chltype(SDR) conname('10.101.2.3 (1414)') xmitq(Q_TRANSFER) replace
注:
通道名称:DP_RCHANNEL (发送方通道的名称) 
传输队列:Q_TRANSFER  (发送方传输队列的名称)

3:启动通道
start channel(QM_ORANGE.QM_APPLE)

4:查看通道状态
dis chs(*)

侦听器管理
##################################################
1:定义侦听器
DEFINE LISTENER(TCPLS1) TRPTYPE(TCP) PORT(1414)  REPLACE

2:启动侦听器
start listener(TCPLS1)
3:显示侦听器信息
display listener(tcpls1)

创建触发
##################################################
一般设置MQ触发器的目的有两种, 一是自动启动发送端通道, 二是监视队列消息, 一旦发现新的消息, 则利用触发器启动相应的处理进程
如果是利用触发器自动启动发送端通道, 使用方法1, 如果是利用触发器启动用户进程, 使用方法2

方法1
A 在传输通道上设置触发器, 打开触发器控制, 类型为"第一个"
B 初始队列为SYSTEM.CHANNEL.INITQ, 该队列为MQ专用的通道启动队列, 不需要手工启动其触发监视器
C 触发器数据为发送端通道名称, 例如 QAG.50
D 在发送端通道不活动的情况下, 在传输通道放入消息测试

方法2
A 创建一个触发启动队列, 其模板为SYSTEM.DEFAULT.INITIATION.QUEUE
runmqsc
define qlocal (MQ.TRIGER.INIQUEUE) like (SYSTEM.DEFAULT.INITIATION.QUEUE)
B 定义进程 所谓进程就是触发器要触发的程序本例中进程名称:TRIGER.PROGRAM 应用程序标识为:"Notepad.exe"
C 在队列上设置触发器, 一般为本地队列, 打开触发器控制, 类型根据自己的需要选择"第一个", "每个" 还是 "根据消息数量"
D 初始队列选择A中创建的触发启动队列, 例如MQ.TRIGER.INIQUEUE, 进程名称设置为B中定义的进程名称, 例如TRIGER.PROGRAM
E 启动触发监视器 runmqtrm -m QAGWY -q MQ.TRIGER.INIQUEUE
F 在本地队列放入消息进行测试

方法2也可以完成方法1的工作, 只需要将进程定义中的应用程序标识改为 runmqchl -m QAGWY -c QAG.50 就可以了, 但MQ中提供了专用的通道启动队列,
而该队列不需要手工启动触发监视器, 因此方法1比方法2的步骤要少, 配置也简单, 所以在利用触发器自动启动发送端通道的情况下, 还是方法1更好.

本文转载自:

上一篇: Struts1 标签库
下一篇: Tag文件和Tag标记
wersdffg
粉丝 13
博文 86
码字总数 32304
作品 0
厦门
程序员
私信 提问
Hyperic HQ监控IBM WebSphere MQ

IBM公司的WebSphere MQ(MQSeries的前身)是一个信息服务器,使您可以轻松地在不同平台交流信息,整合新的和现有的商业应用。 Hyperic HQ对MQ的支持是作为其管理所有的WebSphere技术的全面解...

liuyifeng
2010/09/10
0
0
IBM WebSphere MQ介绍安装以及配置服务详解

附链接文章: java实现MQ客户端调用源码 首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法。说白了也就是通过队列的方式来对应用程序进行数据通信。而无需专用链接来链接...

JavaOlder
2013/03/20
0
12
如何在 JBoss 里配置 IBM MQ

在本文中,我将告诉大家如何在JBoss里安装、配置WebSphere MQ资源适配器。 安装WebSphere MQ资源适配器:    从安装目录复制wmq.jmsra.rar文件到服务器的部署目录中,例如:/server/default...

迷途d书童
2012/06/17
3.5K
2
websphere mq问题

最近的程序一直在和websphere mq打交道,但是遇到很多问题,网上查资料几乎查不到什么结果。。。主要有一下几个问题,求大神来解答 1、事务 我看有一些例子,比如《IBM WebSphere MQ基础教程...

挖红薯
2016/02/16
617
1
WebSphere Application Server V8.0 管理方面新特性

WebSphere Application Server V8.0 概览 WebSphere Application Server V8.0 于 2011 年 6 月隆重发布,同之前的版本一样,WebSphere Application Server V8.0 继续致力于以下三个目标: 使...

IBMdW
2011/08/25
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部