我的MQ笔记
1、安装IBM MQ
1.1、安装先决条件:
(1)WebSphere Eclipse Platform V3.01
(2)为Windows域用户配置WebSphere MQ用户
1.2、安装程序:
(1)接受协议:
(2)选择安装类型为‘定制’:
(3)更改程序文件夹位置:
(4)数据文件夹位置:
(5)IBM Global Security Kit文件夹位置:
(6)日志文件夹位置:
(7)将各功能选项全部安装,如图:(其中MQ资源管理器是默认安装的)
(8)开始安装
(9)安装完毕后,退出系统;
1.3、安装MQ补丁:
(1)安装补丁前需要做以下动作:
Endmqm -p 队列管理器名称
Endmqlsr -m 队列管理器名称
停止MQ服务
(2)MQ补丁安装完成后,它类似Windows补丁,可手动移除补丁,如图:
2、IBM MQ对象介绍
2.1、消息:
通信程序使用消息来交换数据,发送程序如果构造一条消息,则该消息应包含:
- 要发送的数据
- 消息头(控制信息,例如:消息标识和返回地址)
MQ传递的消息有两部分组成:消息描述符(MessageDescriptor)和应用数据(ApplicationData)。默认最大传递的消息大小是4MB,可以根据需要进行设置,最大可到100MB。
2.2、队列:
队列是消息在被程序接收之前的存储位置,发送程序将消息放到适当的队列中,当接收程序就绪时,它就从队列中获取消息。
有四种类型:本地队列(LocalQueue)、远程队列(RemoteQueue)、别名队列(AliasQueue)和模型队列(ModelQueue),最常用到的是本地队列和远程队列。
2.3、通道:
提供从一个队列管理器到其他队列管理器的数据传输路径。通道类型有若干种,其中常用的是发送方通道(SenderChannel)和接收方通道(ReceiverChannel)。
2.4、队列管理器:
每台主管队列的计算机都需要队列管理器。每个队列管理器都具有唯一的名称并且管理在该队列管理器上创建的队列(这些队列称为本地队列)。
每个本地队列也都具有名称,该名称与它的队列管理器的名称一起提供了消息可以被发送到的唯一地址。
2.5、MQ资源管理器:
WebSphere MQ 资源管理器可以管理在 Windows、Unix、Linux、OS/400、z/Series 和其它平台上运行的远程队列管理器。
3、MQ mqsc命令格式:
MQSC 命令 DEFINE(用来定义对象,如队列)、DISPLAY(用来显示对象属性,如队列中的消息的数目)和 CLEAR(用来从队列中除去消息)。具体说明见下表:
3.1、创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器
Eg: crtmqm –q sunny
3.2、删除队列管理器
dltmqm QmgrName
eg: dltmqm sunny
3.3、启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器,可以不带其名字
Eg: Strmqm QM_8
3.4、停止队列管理器
(1)endmqm QmgrName 受控停止
(2)endmqm –i QmgrName 立即停止 eg: endmqm -i QM_8
(3)endmqm –p QmgrName 强制停止 eg: endmqm -p QM_8
3.5、显示队列管理器
dspmq –m QmgrName
eg: dspmq –m QM_0
C:\Documents and Settings\sfexpress>dspmq -m QM_NT
QMNAME(QM_NT) STATUS(正在运行)
3.6、往队列中放消息
amqsput QName QmgrName-------------------将输入的信息存入QName队列中
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
eg:amqsput RQ_8 QM_0 (往远程队列中存放消息)
3.7、从队列中取出消息
amqsget QName QmgrName -------------------从QName队列中取出消息
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
Eg: amqsget LQ_8 QM_8 (从本地队列中取消息)
3.8、启动通道
runmqchl –c ChlName –m QmgrName
eg:runmqchl -c 8.0 -m QM_8 (启动QM_8队列管理器下的8.0通道)
3.9、启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName
3.10、停止侦听
endmqlsr -m QmgrName
eg:endmqlsr -m QM_8-------停止队列管理器QM_8上的侦听器
3.11、运行MQSeries命令
runmqsc QmgrName
如果是默认队列管理器,可以不带其名字
eg:runmqsc QM_8
(1)定义死信队列
DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE
Eg: define QLOCAL(Q_LOCAL) DEFPSIST(YES) REPLACE---新增一条本地队列Q_LOCAL,设定持久性(由参数DEFPSIST确定)
设定队列管理器的死信队列
ALTER QMGR DEADQ(QNAME)
Eg:alter QMGR DEADQ(Q_LOCAL)----将Q_LOCAL设置为系统默认队列管理器的死信队列;
(2)定义本地队列
DEFINE QL(QNAME) REPLACE ------死信队列为本地队列的一种形式
(3)定义别名队列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)
(4)远程队列定义
DEFINE QREMOTE (QRNAME) RNAME (AAA) RQMNAME (QMGRNAME) XMITQ(QTNAME)
说明: QREMOTE (QRNAME)---指本地的远程队列名称
RNAME (AAA)----指的是接收端本地队列名称
RQMNAME (QMGRNAME) -----接收端队列管理器名称
XMITQ(QTNAME)---------本地传输队列名称
(5)定义本地传输队列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) INITQ(SYSTEM.CHANNEL.INITQ) PROCESS(PROCESSNAME) REPLACE
Eg:
(6)创建进程定义
DEFINE PROCESS(PRONAME) DESCR(‘STRING’) APPLTYPE(WINDOWSNT) APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)
其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等
(7)创建发送方通道
DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR) CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE
其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。
Eg: XMITQ(QTNAME)--------代表传输队列
(8)创建接收方通道
DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE
(9)创建服务器连接通道
DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE
(10)显示队列的所有属性
DISPLAY QUEUE(QNAME) [ALL]
(11)显示队列的所选属性
DISPLAY QUEUE(QNAME) DESCR GET PUT
DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH
(12)显示队列管理器的所有属性
DISPLAY QMGR [ALL]
(13)显示进程定义
DISPLAY PROCESS(PRONAME)
(14)更改属性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)
(15)删除队列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)
(16)清除队列中的所有消息
CLEAR QLOCAL(QNAME)
4、MQ的远程队列管理
4.1在客户机上建立服务器连接通道
在被管理客户端建立专用的‘服务器连接’通道,如下:
runmqsc QM_0
define channel(DC.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('000119')
alter qmgr CCSID(1381)
endmqm -p QM_0
strmqm QM_0
strmqcsv QM_0
说明:
(1)channel(DC.SVRCONN) CHLTYPE(SVRCONN) -----表明建立的DC.SVRCONN类型为服务器连接;
(2)MCAUSER-----管理队列管理器上的操作用户在被管理队列管理器上存在并且有管理MQ的权限,需要修改服务器连接通道DC.SVRCONN的MCAUSER属性为管理队列管理器上的操作用户;
4.2在管理服务端上的操作步骤:
(1) 在标题的‘队列管理器’上点击右键,选择显示/隐藏队列管理器;
(2) 点‘添加’按钮,输入被管理客户端的队列管理器名称,如:QM_UNIX,连接方式为直接连接;
(3) 输入被管理客户端的信息,如主机名/ip地址,端口号(为被管理客户端侦听端口),服务器连接通道名称,如下:
(4) 点击完成,开始连接,连接成功后,在队列管理器中显示多出一个客户端的队列管理器,如图:
其中的服务器连接通道S_UNIX显示状态也为‘正在运行’
5、MQ对象的备份与恢复
5.1备份
1、将附件MS03.ZIP解压,DOS模式下进入MS03目录
2、备份过程:
saveqmgr –m 队列管理名 –f 文件名.tst -s
说明:
----m队列管理名
----f 备份信息将写入的文本文件
----s 系统信息不需要导出
eg:
5.2恢复
恢复过程如下:
(1)创建队列管理器:crtmqm 队列管理名
(2)启动队列管理器:strmqm 队列管理名
(3)恢复通道队列定义:runmqsc 队列管理名 < 文件名.tst > 日志文件.txt
eg: runmqsc QM_UNIX < d:\backup.tst > d:\log.txt ;
http://blog.163.com/microsunny_lin/blog/static/24266622200764112832488/
我的MQ笔记的更多相关文章
- 【mq读书笔记】消息消费队列和索引文件的更新
ConsumeQueue,IndexFile需要及时更新,否则无法及时被消费,根据消息属性查找消息也会出现较大延迟. mq通过开启一个线程ReputMessageService来准时转发commitL ...
- 【mq读书笔记】mq事务消息
关于mq食物以什么样的方式解决了什么样的问题可以参考这里: https://www.jianshu.com/p/cc5c10221aa1 上文中示例基于mq版本较低较新的版本中TransactionL ...
- 【mq读书笔记】mq读写分离机制
mq根据brokerName查找Broker地址的过程 mq根据MessageQueue查找Broker地址的唯一依据是brokerName,同一组Broker(M-S)他们的bokerName相同但 ...
- 【mq读书笔记】顺序消息
注意异常情况导致整个消费无限重试 阻塞消费 mq支持局部消息顺序消费,可以确保同一个消息消费队列中的消息被顺序消费.看下针对顺序消息在整个消费过程中做的调整: 队列负载: DefaultMQPushC ...
- 【mq读书笔记】消息过滤机制
mq支持表达式过滤和类过滤两种模式,其中表达式又分为TAG和SQL92.类过滤模式允许提交一个过滤类到FilterServer,消息消费者从FilterServer拉取消息,消息经过FilterSer ...
- 【mq读书笔记】定时消息
mq不支持任意的时间京都,如果要支持,不可避免的需要在Broker层做消息排序,加上持久化方面的考量,将不可避免地带来巨大的性能消耗,所以rocketMQ只支持特定级别的延迟消息. 在Broker短通 ...
- 【mq读书笔记】消费进度管理
从前2节可以看到,一次消费后消息会从ProcessQueue处理队列中移除该批消息,返回ProcessQueue最小偏移量,并存入消息进度表中.那消息进度文件存储在哪合适呢? 广播模式:同一个消费组的 ...
- 【mq读书笔记】消息确认(失败消息,定时队列重新消费)
接上文的集群模式,监听器返回RECONSUME_LATER,需要将将这些消息发送给Broker延迟消息.如果发送ack消息失败,将延迟5s后提交线程池进行消费. 入口:ConsumeMessageCo ...
- 【mq读书笔记】消息消费过程(钩子 失败重试 消费偏移记录)
在https://www.cnblogs.com/lccsblog/p/12249265.html中,PullMessageService负责对消息队列进行消息拉取,从远端服务器拉取消息后将消息存入P ...
随机推荐
- java基础-day16
第05天 API 今日内容介绍 u Object类 & System类 u 日期相关类 u 包装类&正则表达式 第1章 Object类 & System类 1.1 ...
- Java关联关系、依赖关系
关联关系 概念:对象和对象之间的连接 定义:A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关联关系 生命周期:如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁 ...
- chrome常用小插件
1.广告终结者 (去广告) 2.adsafe2.0.1 (去广告) 3.Infinity New Tab ( ...
- 【转】C#中virtual和abstract的区别
virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ...
- 【文文殿下】P3740 [HAOI2014]贴海报
题解 一开始想到离散化,然后暴力模拟.但是存在一种hack数据: [5,7] [1,5] [7,9] 这样会错误的认为第一个区间被覆盖了(因为两个端点被覆盖).所以我们设置一个玄学调参系数,在一个区间 ...
- Akka(0):聊聊对Akka的初步了解和想法
前一段时间一直沉浸在函数式编程模式里,主要目的之一是掌握一套安全可靠的并发程序编程方法(concurrent programming),最终通过开源项目FunDA实现了单机多核CPU上程序的并行运算. ...
- Spring Boot日志管理
SpringBoot内部使用Commons Logging来记录日志,但是默认也提供了对常用日志组件的支持,如:Log4j,Logback等.每种Logger都可以通过配置使用控制台或者文件输出日志内 ...
- NVIDIA GRID 和 NICE DCV 技术用于实现 Linux 和 Windows® 图形加速虚拟桌面
NVIDIA GRID 和 NICE DCV 技术用于实现 Linux 和 Windows® 图形加速虚拟桌面. NICE DCV: 满足 LINUX 和 WINDOWS 的远程 3D 通过 NICE ...
- 08-01 java 帮助文档的制作和使用,使用jdk提供的帮助文档
01_帮助文档的制作和使用 制作说明书的流程 如何制作一个说明书呢? A:写一个工具类 B:对这个类加入文档注释 怎么加呢? 加些什么东西呢? C:用工具解析文档注释 javadoc工具 D:格式 j ...
- expr命令总结
expr在linux中是一个功能非常强大的命令.通过学习做一个小小的总结.1.计算字符串的长度.我们可以用awk中的length(s)进行计算.我们也可以用echo中的echo ${#string}进 ...