1.队列管理器配置文件
UNIX:/var/mqm/qmgrs/queue.manager/qm.ini;
Windows:c:\mqm\qmgrs\queue!manager(队列管理器名为queue.manager)。
2.控制命令(Control Commands)
执行对队列管理器(queue manager)、command servers、channels的操作。有如下命令:
(1).建立队列管理器
注意事项:
- 在网络里队列管理器名称必须唯一;
- 限制队列管理器的数量,因为每个管理器都要消耗资源;
- 定义一个缺省的队列管理器,使用crtmqm的-q选项;
- 定义一个dead-letter queue,使用crtmqm的-u选项;
- 定义一个缺省的transmission queue,使用crtmqm的-d选项;
- 定义日志参数;
配置文件:
MQSeries configuration file(mqs.ini):每个安装拷贝一份;
queue manager configurationfile(qm.ini):每个队列管理器一份。
建立缺省队列管理器:
crtmqm -q -d MY.DEFAULT.XMIT.QUEUE -u \ SYSTEM.DEAD.LETTER.QUEUE saturn.queue.manager
其中:
-q,定义为缺省队列管理器;
-d,指定缺省transmission queue;
-u,指定dead-letter queue;
saturn.queue.manager为队列管理器名称;
(2).启动队列管理器
strmqm saturn.queue.manager
(3).把一个存在的对立管理器设置为缺省队列管理器
手工修改配置文件mqs.ini中的DefaultQueueManager分节。
(4).停止队列管理器
Quiesced shutdown,等待所有的应用连接断开:
endmqm saturn.queue.manager; endmqm -c saturn.queue.manager;提醒应用终止,与上等效。 endmqm -w saturn.queue.manager;等待所有应用程序终止和队列管理器终止。
Immediate shutdown,允许当前MQI CALL完成,不接受新的MQI CALL,不等待应用断开连接:
endmqm -i saturn.queue.manager
Preemptive shutdown,极端做法,立即终止:
endmqm -p saturn.queue.manager
(5).删除队列管理器
dltmqm saturn.queue.manager
3.使用MQSC管理本地对象(local MQSeries objects)
应用程序可以放消息到本地或远程队列(使用MQPUT),但只可以从本地队列直接获得消息(使用MQGET)。
MQSC命令和属性不区分大小写,但对象本身是区分大小写的。
支持输入/输出的重定向(stdin/stdout)。
(1).启动MQSC命令
runmqsc,不输入参数则管理缺省队列管理器,否则要指出队列管理器名。
命令内容以“+”表示续行,没有表示结束,也可用“;”明确表示结束。
(2).结束MQSC命令
END 或输入EOF字符
(3).显示队列管理器属性
DISPLAY QMGR (ALL)
(4).修改队列管理器属性
ALTER QMGR DEADQ (ANOTHERDLQ) INHIBTEV (ENABLED)
在ALTER QMGR后列出要修改的属性和值。
(5).运行文本中的MQSC命令
runmqsc < myprog.in,使用重定向
文件每行不要超过72字符,例子文本:
amqscos0.tst:Definitions of objects used by sample programs;
amqscic0.tst:Definitions of queues for CICS transactions。
所在目录:
mqmtop/samp(UNIX);
mqmtop\tools\mqsc\samples(WIN)。
校验文本:
runmqsc -v < myprog.in > myprog.out
不能校验远程队列管理器。
(6).定义本地队列(loacl queue)
DEFINE QLOCAL (ORANGE.LOCAL.QUEUE) + 名称 DESCR('Queue for messages') + 描述 PUT (DISABLED) + 不允许put GET (ENABLED) + 允许get NOTRIGGER + 不产生trigger MSGDLVSQ (FIFO) + 使用FIFO模式 MAXDEPTH (1000) + 最多1000个消息 MAXMSGL (2000) + 每个消息最大2000字节 USAGE(NORMAL); 普通队列(非transmission queue)
(7).定义a dead-letter queue
两种方法:
- 在crtmqm中指定-u选项;
- 使用ALTER QMGR命令。
Dead-letter队列必须是一个本地队列,而且其MAXMSGL参数必须足够大,能存放当前最大的消息。
一个例子是:SYSTEM.DEAD.LETTER.QUEUE,在建立队列管理器时自动创建。
(8).显示队列的缺省属性
有一个系统队列:SYSTEM.DEFAULT.LOCAL.QUEUE,用户没指定的属性都从它复制过来。所以命令如下:
DISPLAY QUEUE (SYSTEM.DEFAULT.LOCAL.QUEUE)
(9).显示队列的属性
DISPLAY QUEUE (ORANGE.LOCAL.QUEUE) + MAXDEPTH + MAXMSGL + CURDEPTH;
显示队列ORANGE.LOCAL.QUEUE的MAXDEPTH、MAXMSGL和CURDEPTH。其中CURDEPTH队列的当前深度,即当前在队列的消息数量。
不指定具体的属性名称则显示所有属性:
DISPLAY QUEUE (ORANGE.LOCAL.QUEUE)
(10).复制队列的定义
定义队列MAGENTA.QUEUE,其属性与ORANGE.LOCAL.QUEUE相同:
DEFINE QLOCAL (MAGENTA.QUEUE) + LIKE (ORANGE.LOCAL.QUEUE)
在复制的同时也可进行修改:
DEFINE QLOCAL (THIRD.QUEUE) + LIKE (ORANGE.LOCAL.QUEUE) + MAXMSGL(1024);
当定义一个没有使用LIKE的队列时,其实际等于:
DEFINE LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE)
(11).修改本地队列的属性
有两种方法,但效果不同:
- ALTER QLOCAL;
- DEFINE QLOCAL,使用REPLACE。
ALTER QLOCAL (ORANGE.LOCAL.QUEUE) + MAXMSGL(10000);
修改MAXMSGL属性,其他保持不变。
DEFINE QLOCAL (ORANGE.LOCAL.QUEUE) + MAXMSGL(1000) REPLACE;
不仅仅修改了MAXMSGL,其他属性都被缺省值覆盖。
(12).清空本地队列
删除队列中的所有消息:
CLEAR QLOCAL (MAGENTA.QUEUE)
当队列中有未提交的消息,或还有应用程序打开队列时,无法清空。
(13).删除一个本地队列
DELETE QLOCAL (PINK.QUEUE);
不能删除有未提交的消息的队列。
使用PURGE可以删除含有已提交消息的队列:
DELETE QLOCAL (PINK.QUEUE) PURGE
使用UNPURGE不可以删除含有已提交消息的队列。
(14).浏览(browse)队列中的内容
程序和源代码:
UNIX:Source:mqmtop/samp/amqsbcg0.c;
Executable:mqmtop/samp/bin/amqsbcg。
WINDOWS:Source:c:\mqm\tools\c\samples\amqsbcg0.c;
Executable:c:\mqm\tools\c\samples\bin\amqsbcg.exe。
使用时指定两个参数,队列名和队列管理器名:
amqsbcg SYSTEM.ADMIN.QMGREVENT.tpp1 saturn.queue.manager
(15).定义别名(an alias queue)
DEFINE QALIAS (MY.ALIAS.QUEUE) TARGQ + (YELLOW.QUEUE);
定义队列YELLOW.QUEUE的别名MY.ALIAS.QUEUE。
ALTER QALIAS (MY.ALIAS.QUEUE) TARGQ + (MAGENTA.QUEUE);
可以修改别名使其指向别的队列。
定义别名可修改属性,使同一个对列不同的别名有不同的属性:
DEFINE QALIAS (ALPHAS.ALIAS.QUEUE) + TARGQ (YELLOW.QUEUE) + PUT (ENABLED) + GET (DISABLED) DEFINE QALIAS (BETAS.ALIAS.QUEUE) + TARGQ (YELLOW.QUEUE) + PUT (DISABLED) + GET (ENABLED)
也可使用LIKE和REPLACE来定义别名。
(16).使用别名的其他命令
DISPLAY QUEUE (ALPHAS.ALIAS.QUEUE); ALTER QALIAS (ALPHAS.ALIAS.QUEUE) + TARGQ(ORANGE.LOCAL.QUEUE) FORCE DELETE QALIAS (ALPHAS.ALIAS.QUEUE);
(17).定义model队列
model队列提供一个模板,当请求该类队列时,由队列管理器动态产生一个队列。
定义方法同定义本地队列,此外,还可指定动态队列是临时temporary或永久的permanent。
DEFINE QMODEL (GREEN.MODEL.QUEUE) + DESCR('Queue for messages from application X') + PUT (DISABLED) + GET (ENABLED) + NOTRIGGER + MSGDLVSQ (FIFO) + MAXDEPTH (1000) + MAXMSGL (2000) + USAGE (NORMAL) + DEFTYPE (PERMDYN)
其中DEFTYPE指定产生的动态队列是permanent dynamic queues。
缺省属性来源于SYSYTEM.DEFAULT.MODEL.QUEUE。
(18).使用model的其他命令
DISPLAY QUEUE (GREEN.MODEL.QUEUE); ALTER QMODEL (BLUE.MODEL.QUEUE) PUT(ENABLED); DELETE QMODEL (RED.MODEL.QUEUE);
(19).定义应用队列的triggering
DEFINE QLOCAL (MOTOR.INSURANCE.QUEUE) + PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS) + trigger产生时执行的应用 MAXMSGL (2000) + DEFPSIST (YES) + INITQ (MOTOR.INS.INIT.QUEUE) + initiation queue名,放trigger消息 TRIGGER + 使用trigger TRIGTYPE (DEPTH) + 指定trigger发生的事件:超过TRIGDPTH TRIGDPTH (100)+ 产生trigger的消息数量 TRIGMPRI (5); 计算消息的最低优先级
(20).定义initiation queue
当trigger事件发生时,放置trigger消息在initiation queue中。
定义方法同local queue,可类似如下定义:
DEFINE QLOCAL(MOTOR.INS.INIT.QUEUE) + GET (ENABLED) + NOSHARE + NOTRIGGER + MAXMSGL (2000) + MAXDEPTH (1000)
(21).定义process
DEFINE PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS) + DESCR ('Insurance request message processing') + APPLTYPE (UNIX) + 应用类型 APPLICID ('/u/admin/test/IRMP01') + 可执行程序路径 USERDATA ('open, close, 235');用户自定义数据由应用使用
(22).显示process的属性
DISPLAY PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS);
也可使用ALTER PROCESS和DELETE PROCESS来修改/删除process。
4.使用MQSC管理远程对象
(1).启动命令服务器(command server)
命令strmqcsv,后跟队列管理器名:
strmqcsv saturn.queue.manager
(2).显示command server的状态
dspmqcsv saturn.queue.manager;
(3).停止command server
endmqcsv saturn.queue.manager; 与endmqcsv -c saturn.queue.manager等同;
立即停止:
endmqcsv -i saturn.queue.manager;
(4).准备队列管理器
在两个系统上都要做的工作:
- 建立好队列管理器和缺省的对象(crtmqm);
- 启动队列管理器(strmqm)。
在目标队列管理器上:
- 队列SYSTEM.ADMIN.COMMAND.QUEUE必须存在;
- command server必须启动(strmqcsv)。
(5).准备channels和transmission queues
需要两个channels,每个方向一个;他们关联着transmission queue。以TCP为例。
(6).定义channels和transmission queues
在源端队列管理器:
定义Sender channel:
DEFINE CHANNEL ('source.to.target') + CHLTYPE(SDR) + CONNAME (RHX5498) + 机器的网络名称 XMITQ ('target.queue.manager') + transmission queue名 TRPTYPE(TCP)
定义receiver channel:
DEFINE CHANNEL ('target.to.source') + CHLTYPE(RCVR) + TRPTYPE(TCP)
定义transmission queue:
DEFINE QLOCAL ('target.queue.manager') + USAGE (XMITQ)
在目的端队列管理器:
定义sender channel:
DEFINE CHANNEL ('target.to.source') + CHLTYPE(SDR) + CONNAME (RHX7721) + XMITQ ('source.queue.manager') + TRPTYPE(TCP)
定义receiver channel
DEFINE CHANNEL ('source.to.target') + CHLTYPE(RCVR) + TRPTYPE(TCP)
定义transmission queue
DEFINE QLOCAL ('source.queue.manager') + USAGE (XMITQ)
(7).启动channels
UNIX平台:
启动监听器:配置inetd,使其正常运行MQ监听器;
在源端启动channels:
runmqchl -c source.to.target -m source.queue.manager &;
在目的端启动channels:
runmqchl -c target.to.source -m source.queue.manager &;
Windows平台:
启动监听器:
在源端:
START runmqlsr -t TCP -m source.queue.manager;
在目的端:
START runmqlsr -t TCP -m target.queue.manager;
在源端启动channels:
START runmqchl -c source.to.target -m source.queue.manager;
在目的端启动channels:
START runmqchl -c target.to.source -m source.queue.manager;
(8).远程执行MQSC命令
在目的端保证已经启动command server:
strmqcsv target.queue.manager;
在源端:
runmqsc -w 30 target.queue.manager;(超时为30秒)
使用重定向:
runmqsc -w 60 target.queue.manager < mycomds.in > report.out;
(9).建立a local definition of a remote queue
DEFINE QREMOTE (CYAN.REMOTE.QUEUE) + 远程对象的本地名字 DESCR ('Queue for insur req from the branches') + 说明 RNAME (AUTOMOBILE.INSURANCE.QUOTE.QUEUE) + 远程队列管理 器的一个本地队列名 RQMNAME (jupiter.queue.manager) + 远程队列管理器的名字 XMITQ (INQUOTE.XMIT.QUEUE); transmission queue名, 若不指定,则使用一个名字与远程管理器名称相同的队列。
(10).使用local definition的其他命令
DISPLAY QUEUE (CYAN.REMOTE.QUEUE); ALTER QREMOTE (CYAN.REMOTE.QUEUE) PUT(ENABLED); DELETE QREMOTE (CYAN.REMOTE.QUEUE);
不能删除一个远程对象,只是删除了本地引用。
(11).建立a transmission queue
当向远程队列放置消息时,若没有指定transmission queue,则缺省使用名字与远程队列管理器名称相同的transmission queue,若这样的队列不存在,则定义它。
DEFINE QLOCAL ('target.queue.manager') + DESCR ('Default transmission queue for target qm') + USAGE (XMITQ);
5.保护MQ对象
在UNIX下,存取MQ对象的用户ID必须是mqm组的成员。若管理一个远程对象,则该用户ID也必须是远程系统的mqm组成员。
在WINDOWS下,用户ID必须是mqm组或administrators组的成员。若管理一个远程对象,则该用户ID也必须是远程系统的mqm组或administrators组的成员。
缺省OAM(object authority manager)是起作用的,可以禁止它,在队列管理器建立之前设置环境变量:
UNIX:export MQSNOAUT=yes
WNDOWS:SET MQSNOAUT=yes
但这样做之后,没法再起用OAM。
禁用OAM的另一法是在queue manager configuration file(qm.ini)删除uthorization service stanza。
6.配置文件
mqs.ini
qm.ini
相关推荐
1. **电源管理**:MQ系列传感器的供电电压通常在5V左右,确保稳定供电对于传感器的正常工作至关重要。 2. **信号调理**:由于传感器输出的是模拟信号,需要通过ADC(模数转换器)将信号转换为数字值,以便微控制器...
- **MQ API**: 提供了一系列编程接口,允许开发者在各种编程语言中集成MQ功能。这些API包括C、Java、.NET等多种语言版本。 - **调用API进行操作**: 如打开和关闭队列、发送和接收消息、设置队列属性等,都是通过API...
### MQ错误收集系列知识点 #### 一、基础知识与环境配置 **标题与描述解析:** 本次分享的主题聚焦于“MQ 错误收集系列”,主要内容涵盖了 IBM WebSphere MQ 中间件在运行过程中可能遇到的错误信息及其相应的解决...
配置WebSphere MQ进行点对点消息传递需要在源队列管理器和目标队列管理器上进行一系列的设置。 **1. 添加必要的JAR文件** 在`MQ\Java\lib`目录下,需要添加以下三个JAR文件: - `com.ibm.mq.jar`: 支持所有连接选项...
作为MQ系列产品的基石,WebSphere MQ为不同系统间的通信提供了强大的支持,确保了企业应用之间的稳定、高性能和可靠的通讯。 1. **消息中间件概念**:消息中间件是连接分布式系统的一种软件,它通过消息队列进行...
MQ系列是IBM提供的消息队列服务,它通过消息模型实现了应用之间的解耦。消息队列允许应用程序将数据作为消息放入队列,然后由其他应用程序在合适的时间取出处理,这极大地提高了系统的稳定性和可靠性。 在Java中,...
IBM MQ(Message Queue)是IBM公司提供的一种中间件产品,用于在分布式系统中可靠地传输消息。MQ错误代码是MQ在运行过程中遇到问题时返回的标识符,它们提供了关于问题性质和原因的重要信息。这份“IBM MQ错误代码...
MQ日常维护手册是IT管理员进行MQ系统管理的重要参考文档,涵盖了一系列管理和监控MQ所需的知识点。 一、MQ目录结构 MQ的目录结构通常包含配置文件、日志文件、消息队列数据等关键组件。例如,`etc`目录存储MQ配置...
3. 安装MQ系列的Runtime、SDK和Server软件包: `rpm -U MQSeriesRuntime-6.0.0-0.i386.rpm` `rpm -U MQSeriesSDK-6.0.0-0.i386.rpm` `rpm -U MQSeriesServer-6.0.0-0.i386.rpm` 在这一步中,会创建mqm用户和mqm...
5. **MQ与数据库的交互**:在MQ系列场景中,MQ可以直接与数据库如DB2交互,或者通过MQ-DB2数据库模块间接交互。这种交互可能涉及到多个应用程序和交易管理器,确保在整个消息传递过程中的数据完整性。 6. **MQ消息...
MQ系列包括MQ-2、MQ-3、MQ-4等不同型号,每种型号针对不同的气体敏感,如MQ-2可以检测可燃气体、烟雾和一氧化碳,MQ-3则主要针对酒精,MQ-4则对甲烷(天然气)敏感。这些传感器通常通过简单的模拟电路或数字接口与...
在Java开发环境中,与IBM MQ 7.5进行对接时,通常需要一系列特定的JAR依赖包来支持相关功能。这些JAR包在Maven仓库可能因为授权问题无法直接获取,因此需要手动下载。 在提供的文件列表中,我们可以看到以下关键的...
8. **all70pdf**:这个名字可能表示一个包含70个PDF文档的集合,这可能是一系列IBM MQ相关的教程、白皮书或案例研究的集合,提供更广泛的知识点覆盖。 通过学习这些资料,读者可以系统性地了解和掌握IBM MQ,包括其...
通过一系列实践操作,学员能够掌握如何创建线性日志队列管理器、向本地队列发送不同类型的持久性消息以及如何在队列受损的情况下进行恢复。 #### 核心知识点 1. **创建线性日志队列管理器** - 创建新的队列管理...
- **队列管理器配置**:队列管理器是 WebSphere MQ 的核心组件之一,需要配置其名称、监听地址、端口号等。 - **通道配置**:通道用于连接不同的队列管理器,需要定义通道的类型、传输队列等。 - **队列配置**:根据...
IBM MQ 7.5版本的JAR文件包含了一系列的API接口和实现,使得开发者可以通过编写Java代码来创建、发送、接收和管理消息。这些JAR文件主要包括以下组件: 1. **com.ibm.mq.allclient.jar**:这是IBM MQ的主要客户端库...
WebSphere MQ V6.0是这个系列的一个重要版本,发布于2007年,为用户提供了稳定、高效且安全的消息传递服务。 **WebSphere MQ的基本概念:** 1. **消息队列**:WebSphere MQ的核心概念,是数据传输的载体,用于存储...
导出过程中,`saveqmgr.exe`会读取`QM_TEST`队列管理器的所有配置,并将其转化为一系列MQ命令,这些命令被写入`text.txt`文件中。这一步是整个导出流程的核心,因为它能够确保所有队列、通道、主题空间等配置均被...