MQ队列管理器搭建(一)
多应用单MQ使用场景
如上图所示,MQ独立安装,或者与其中一个应用同处一机。Application1与Application2要进行通信,但因为跨系统,所以引入中间件来实现需求。
Application1需要连接MQ,并将消息放入队列Queue中,Application2同样连接MQ,监听在Queue队列上,一旦发现有消息进入则取出该消息进行处理。
下面将给出创建队列管理器和队列的示例:
定义队列管理器名称为Qm1,本地队列名称为Queue,服务器连接通道CHAN_SERVER_CON,监听端口为1414,死性队列QDEAD
搭建MQ队列可以使用图形用户界面也可以使用命令进行,此处使用命令进行。
1.创建MQ队列管理器,使用mqm用户登录MQ所在机器
mqm@localhos ~>$crtmqm Qm1
2.启动Qm1队列管理器
mqm@localhos ~>$strmqm Qm1
3.进入Qm1命令行
mqm@localhos ~>$runmqsc Qm1
4.定义一个本地队列Queue
DEFINE QLOCAL ('Queue') DEFPSIST (YES) MAXDEPTH(100) REPLACE
'Queue'为队列名称,至于使用单引号的原因是,如果在shell脚本中不加单引号的话,最后创建出来的会变成大写QUEUE.。DEFPSIST(YES)表示该队列为持久化队列,MAXDEPTH(100)代表该队列的最大深度为100,如果消息超过了100的话,则会被放入死性队列。
5.在定义一个死性队列QDEAD
DEFINE QLOCAL ('QDEAD') DEFPSIST (YES) MAXDEPTH(100) REPLACE
6..给Qm1设置指定的死性队列,当消息无法到达指定的Queue中时,会被放入死性队列QDEAD
ALTER QMGR DEADQ(‘QDEAD’)
7.定义服务器连接通道CHAN_SERVER_CON,该通道的用途是供应用程序连接的,应用程序通过服务器连接通道从而连接MQ。
DEFINE CHANNEL(‘CHAN_SERVER_CON’) CHLTYPE(SVRCONN) REPLACE
8.定义监听器LISTENER.TCP,该端口1414应用程序连接时需要指定。
DEFINE LISTENER('LISTENER.TCP') TRPTYPE(TCP) CONTROL(QMGR) PORT(1414) REPLACE
9.启动监听器LISTENER.TCP
START LISTENER('LISTENER.TCP')
到此为止这个需求中的MQ队列管理器已经创建完毕了。如果在创建过程中出现错误,或者想停止队列管理器,或者想删除重新创建,则执行下述命令:
1.删除前先停止队列管理器
ctrl+c可以冲命令行跳出,或者输入end回车也可以。
mqm@localhos ~>$endmqm Qm1 停止队列管理器
mqm@localhos ~>$dspmq 查看当前队列管理器的执行状态,当队列管理器状态变为Ended normally时才能删除
mqm@localhos ~>$dltmqm Qm1 删除队列管理器,它会级联删除该队列管理器中的队列和监听器等等。
2.至于java如何与MQ通信,如何连接MQ队列此处不做过多的阐述了!