概念理解:
1、通道:指MQ访问的一个物理API接口,因为MQ都实现了JMS协议,底层走的是SOCKET,
而通道就是封装了协议和操作SOCKET的一个接口,我们连MQ的时候,没有显示的声明SOCKET连接等,就是因为有通道的存在。
2、 Q:什么时候需要去创建接收/发送方通道?
A:在队列管理器创建的时候创建,我们默认建的是服务器通道,支持接收和发送两种操作模式。
3、死信队列
存储无法传递或已过期的消息的副本。如果过期或无法传递的消息是事务性消息,则被存储在一种特殊的死信队列中,称为“事务性死信队列”。
死信存储在过期消息所在的计算机上。
4、通道类型CHLTYPE
通道类型可以是:SDR,SVR,RCVR,RQSTR,CLNTCONN,SVRCONN,CLUSSDR和CLUSRCVR,
创建接收方通道:DEFINE CHANNEL (SDR_TEST)CHLTYPE(RCVR) REPLACE
创建服务器连接通道:DEFINE CHANNEL (SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE
常用的命令:
登录到部署MQ的机器上,进入MQ命令行:
1、队列的相关操作
1.1、定义本地队列
DEFINE QL(XU_TEST) REPLACE
1.2、定义别名队列
DEFINE QALIAS(XUKAIXUN) TARGQ(XU_TEST)
1.3、显示队列的部分属性
DISPLAY QUEUE(MY_QUEUE) DESCR GET PUT
AMQ8409: Display Queue details.
QUEUE(MY_QUEUE) TYPE(QLOCAL)
DESCR( ) GET(ENABLED)
PUT(ENABLED)
1.4、显示队列的全部属性
DISPLAY QUEUE(XU_TEST)
1.5、清除队列中所有消息
CLEAR QLOCAL(XU_TEST)
1.6、删除队列
DELETE QLOCAL(XU_TEST)
1.7、查看队列被哪个程序占用
dis qs(*) type(handle)
QUEUE(GAIA_XKX.Q) TYPE(HANDLE)
APPLTAG(WebSphere MQ Client for Java) APPLTYPE(SYSTEM)
1.8、去使能队列的PUT属性
ALTER QLOCAL(MY_QUEUE) PUT(DISABLED)
1.9、显示别名队列的所有属性
dis qalias(test)
1.10、修改别名队列绑定的队列
define qalias(test) targq(XU_TEST)
alter qalias(test) targq(MY_QUEUE)
2、队列管理器的相关操作
2.1、启动MQ管理器,在MQ服务器上直接运行下面命令
strmqm WNMS3_QM (队列管理器名称)
2.2、停止MQ管理器,在MQ服务器上直接运行下面命令
endmqm WNMS3_QM (队列管理器名称)
endmqm -i XU_TEST_MQ 立即停止
endmqm -p XU_TEST_MQ 强制停止
2.3、增加MQ管理器,在MQ服务器上直接运行下面命令
crtmqm -q XU_TEST_MQ
2.4、运行MQ命令
runmqsc XU_TEST_MQ
2.5、删除队列管理器,删除之前,先停止队列管理器
dltmqm XU_TEST_MQ
2.6、显示队列管理器的所有属性
DISPLAY QMGR
2.7、修改队列管理器的描述(DESCR属性)
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
3、不进入MQ命令行,直接在MQ机器上往MQ队列里发消息,取消息。
3.1、向队列里发消息,在/opt/mqm/samp/bin/目录运行下面命令:
amqsput XU_TEST XU_TEST_MQ
3.2、从队列里取消息,在/opt/mqm/samp/bin/目录运行下面命令:
amqsget XU_TEST XU_TEST_MQ
ps: 用amqsput命令向队列发消息时队列名称要大写
进入MQ,创建队列管理器xu_mq_mgr,队列xu_mq,然后切换到/opt/mqm/samp/bin/目录下
A:执行“./amqsput xu_mq xu_mq_mgr”,报错如下
-bash-4.1$ ./amqsput xu_mq xu_mq_mgr
Sample AMQSPUT0 start
target queue is xu_mq
MQOPEN ended with reason code 2085
unable to open queue for output
Sample AMQSPUT0 end
B:执行“./amqsput XU_MQ XU_MQ_MGR”,”./amqsput xu_mq XU_MQ_MGR“,或者“./amqsput xu_mq XU_MQ_MGR”报错如下
./amqsput XU_MQ XU_MQ_MGR
Sample AMQSPUT0 start
MQCONN ended with reason code 2058
./amqsput xu_mq XU_MQ_MGR
Sample AMQSPUT0 start
MQCONN ended with reason code 2058
./amqsput xu_mq XU_MQ_MGR
Sample AMQSPUT0 start
MQCONN ended with reason code 2058
C:执行“./amqsput XU_MQ xu_mq_mgr”,消息发送成功:
./amqsput XU_MQ xu_mq_mgr
Sample AMQSPUT0 start
target queue is XU_MQ
Test!
Sample AMQSPUT0 end