由于工作有需要和第三方MQ通信,因为以前没有整过MQ,所以对于我来说很陌生。在网上也查看了一些经验,再加上个人的实践,小总结如下:
MQ的安装包是ISO,所以需要将ISO文件mount到Linux Enterprise 10 的一个目录下面,具体操作如下:
假如你选定的mount目录为根目录下mnt/下面,或者下面你新建一个目录可以mkdir一个目录。我是直接放在mnt目录下面的:
ISO文件放在/home/afe/MQinstall/下面,名字为MQ_6.0_Linux_x86-64.iso 那么可以用命令:
mount -o loop /home/afe/MQinstall/MQ_6.0_Linux_x86-64.iso /mnt/cd1
这个时候,ISO文件中的rpm文件都出现在了/mnt下面。
备注:使用mount需要root权限。
如果你的安装包是.tar.gz文件,那就可以省略以上一个步骤:直接解压
tar -zxvf MQ_6.0_Linux_x86-64.tar.gz
接下来步骤如下:
1:创建WebSphere MQ 必需的文件系统,命令如下:
mkdir /opt/mqm # for product code
mkdir /var/mqm # for working data
我从网上看到说MQ安装时候默认的目录就是这两个,意思可以没必要建,但是为了保险还是自己手工建立一下哈。
2:创造MQ用户和用户组,命令如下:
groupadd mqm
useradd -d /var/mqm -g mqm -G mqm mqm
passwd mqm # change password to “password”
只有把mqm密码改了,才能使以上生效。
3:为mqm用户组添加root组
cd /etc
vi group
修改 mqm:!:1007:mqm ? mqm:!:1007:mqm,root
这里的gid要依据各个系统的建立用户设定而为。我的是1007
4: 调整系统参数(视需要而定)
修改最大共享内存,命令如下:
cat /proc/sys/kernel/shmmax
echo 268435456 >/proc/sys/kernel/shmmax
修改最大文件句柄,命令如下:
cat /proc/sys/fs/file-max
echo 32768 >/proc/sys/fs/file-max
如果自己系统比这个大,没必要改。
5:转到WebSphere MQ解压后的目录中,获得WebSphere MQ授权,命令如下:
./mqlicense.sh -text_only
阅读全文后,选择1接受授权。
6:安装WebSphere MQ客户端和服务端,命令如下:
rpm -ivh MQSeriesRuntime-6.0.0-0.i386.rpm
rpm -ivh MQSeriesSDK-6.0.0-0.i386.rpm
rpm -ivh MQSeriesJava-6.0.0-0.i386.rpm
rpm -ivh MQSeriesClient-6.0.0-0.i386.rpm
rpm -ivh MQSeriesSamples-6.0.0-0.i386.rpm
rpm -ivh MQSeriesServer-6.0.0-0.i386.rpm(如果只装客户端,这个没必要安装)
7:安装校验
rpm -qa | grep MQSeries
结果如下则表明MQ 客户端的安装已成功。
MQSeriesRuntime-6.0.0-0
MQSeriesSDK-6.0.0-0
MQSeriesJava-6.0.0-0
MQSeriesClient-6.0.0-0
MQSeriesSamples-6.0.0-0
MQSeriesServer-6.0.0-0(只装客户端,是没有这一项的)
到这里MQ就已经安装完成了,其实MQ的安装摸索一下就会了,关键是MQ的配置。
下面简要说明一下MQ的配置操作:
安装完MQ,程序本身会把/opt/mqm/bin/目录下面的一些程序链接到/usr/bin/下面,例如crtmqm,runmqsc等等,这些命令只有安装了服务端才有。
1: 创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器 。
2: 删除队列管理器
dltmqm QMgrName
3: 启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器,可以不带其名字
4: 停止队列管理器
endmqm QmgrName 受控停止
endmqm –i QmgrName 立即停止
endmqm –p QmgrName 强制停止
5: 显示队列管理器
dspmq –m QmgrName
如果输入dspmq,那么显示的是默认的队列管理器。
6: 运行MQSeries命令
runmqsc QmgrName
如果是默认队列管理器,可以不带其名字
7:往队列中放消息
amqsput QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
从队列中取出消息
amqsget QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
8:启动通道
runmqchl –c ChlName –m QmgrName
启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName
停止侦听
endmqlsr -m QmgrName
9: 定义死信队列
DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE
设定队列管理器的死信队列
ALTER QMGR DEADQ(QNAME)
定义本地队列
DEFINE QL(QNAME) REPLACE
定义别名队列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)
远程队列定义
DEFINE QREMOTE(QRNAME) + RNAME(AAA) RQMNAME(QMGRNAME) + XMITQ(QTNAME)
定义模型队列
DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)
定义本地传输队列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(PROCESSNAME) REPLACE
10:创建发送方通道
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(SDR_ TEST) CHLTYPE(RCVR) REPLACE
创建服务器连接通道
DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE
显示队列的所有属性
DISPLAY QUEUE(QNAME) [ALL]
显示队列的所选属性
DISPLAY QUEUE(QNAME) DESCR GET PUT
DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH
显示队列管理器的所有属性
DISPLAY QMGR [ALL]
显示进程定义
DISPLAY PROCESS(PRONAME)
更改属性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)
删除队列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)
清除队列中的所有消息
CLEAR QLOCAL(QNAME)
以上就是基本的操作,对于更深入的东西,只能慢慢研究了,先写到这!