IBM MQ

一、安装步骤:

1. root帐号登录系统

2. unlink /bin/sh; ln -s /bin/bash /bin/sh (ubuntu中需要)

3. MQ安装程序需将代码安装到目录/opt/mqm下,将数据保存到目录/var/mqm下,需确保相关目录下有足够的磁盘空间
4.
创建名称为“mqm”的组和用户,并且将用户的目录指定为/home/mqm
//
建立用户组mqm,注意:组名必须是mqm
groupadd mqm

//root用户增加到mqm组中

usermod -G mqm root

//建立属于组mqm的用户mqm,注意:用户名必须是mqm

useradd mqm -g mqm -d/home/mqm -s/bin/bash

//修改用户mqm的密码
passwd mqm

//创建用户目录

mkdir /home/mqm

//更改目录权限

chown -R mqm:mqm /home/mqm

4. 解压WMQv600Trial-x86_linux_2.tar.gz

//解压文件
tar xvzf WMQv600Trial-x86_linux_2.tar.gz

5. 安装
在安装文件解压目录下

//接受MQ license

./mqlicense.sh –accept

//安装(如果是ubuntu 则需要带--nodeps参数)

rpm --nodeps -ivh MQSeriesIES30-6.0.0-0.i386.rpm MQSeriesSDK-6.0.0-0.i386.rpm MQSeriesMan-6.0.0-0.i386.rpm MQSeriesSamples-6.0.0-0.i386.rpm MQSeriesServer-6.0.0-0.i386.rpm MQSeriesJava-6.0.0-0.i386.rpm MQSeriesClient-6.0.0-0.i386.rpm MQSeriesConfig-6.0.0-0.i386.rpm MQSeriesRuntime-6.0.0-0.i386.rpm MQSeriesMsg_Zh_CN-6.0.0-0.i386.rpm MQSeriesFTA-6.0.0-0.i386.rpm

如果是ubuntu 8.10suse10.0需安装补丁MQRP0002.tar.gz (名称我简写过,IBM网站有可下载,我这里也有,372,458,780 字节)

rpm --nodeps -ivh IBMJava2-142-ia32-SDK-1.4.2-5.0.i386.rpm MQSeriesClient-U806639-6.0.2-0.i386.rpm MQSeriesConfig-U806639-6.0.2-0.i386.rpm MQSeriesFTA-U806639-6.0.2-0.i386.rpm MQSeriesIES30-U806639-6.0.2-0.i386.rpm MQSeriesJava-U806639-6.0.2-0.i386.rpm MQSeriesMan-U806639-6.0.2-0.i386.rpm MQSeriesMsg_Zh_CN-U806639-6.0.2-0.i386.rpm MQSeriesRuntime-U806639-6.0.2-0.i386.rpm MQSeriesSamples-U806639-6.0.2-0.i386.rpm MQSeriesSDK-U806639-6.0.2-0.i386.rpm MQSeriesServer-U806639-6.0.2-0.i386.rpm MQSeriesTXClient-U806639-6.0.2-0.i386.rpm

二、安装完毕以后,验证安装是否成功,按顺序执行以下步骤:

1. mqm帐号登录系统

2. /etc/services中添加如下内容

QM00        1414/tcp

3. /etc/inetd.conf中添加如下内容

QM00 stream tcp nowait mqm /opt/mqm/bin/amqcrsta amqcrsta -m QM00

4. 创建缺省队列管理器

crtmqm -lc -lf 16384 -lp 2 -ls 1 QM00

5. 创建本地队列

strmqm QM00   //启动队列管理器

strmqcsv QM00 //启动服务器端

runmqsc QM00  //进入客户端

//创建2个本地队列

def ql(01_1) maxdepth(10000) maxmsgl(1048576) defpsist(yes) replace

def ql(00_1) maxdepth(10000) maxmsgl(1048576) defpsist(yes) replace

6. 创建远程队列

A

//创建队列管理器,并运行队列管理器

crtmqm -lc -lf 16384 -lp 2 -ls 1 QM00

strmqm QM00

strmqcsv QM00

runmqsc QM00

 

//创建队列和通道

def ql(00_1) maxdepth(10000) maxmsgl(1048576) defpsist(yes) replace

def qr(01_1) rname(01_1) rqmname(QM01) xmitq(QM01) defpsist(yes) replace

 

def ql(deadq) defpsist(yes) maxdepth(20000) maxmsgl(1004856) replace

alter qmgr deadq(deadq)

 

def ql(QM01) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(00.01) initq(system.channel.initq) replace

 

def chl(00.01) chltype(sdr) discint(1800) conname('168.33.113.142(1414)') xmitq(QM01) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace

 

def chl(01.00) chltype(rcvr) trptype(tcp) replace

 

B

//创建队列管理器,并运行队列管理器

crtmqm -lc -lf 16384 -lp 2 -ls 1 QM01

strmqm QM01

strmqcsv QM01

runmqsc QM01

 

//创建队列和通道

def ql(01_1) maxdepth(10000) maxmsgl(1048576) defpsist(yes) replace

def qr(00_1) rname(00_1) rqmname(QM00) xmitq(QM00) defpsist(yes) replace

 

def ql(deadq) defpsist(yes) maxdepth(20000) maxmsgl(1004856) replace

alter qmgr deadq(deadq)

 

def ql(QM00) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(01.00) initq(system.channel.initq) replace

 

def chl(01.00) chltype(sdr) discint(1800) conname('168.33.112.124(1414)') xmitq(QM00) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace

 

def chl(00.01) chltype(rcvr) trptype(tcp) replace

三、启动队列管理器和通道

strmqm QM01

strmqcsv QM01

runmqsc QM01

 

start chl(01.00)                        //启动通道

stop chl(01.00)                        //停止通道

dis chs(*)                                 //查看通道 STATUS = RUNNING 表示连通正常

 

四、C++测试源码(VCUbuntu g++)

1.如果不发送文件时lpFile参数填空值

2.Linux时保证/home/shtc/bin/QQBattleZone.EXE文件存在,路径可改

3.Windows时也注意更改上述路径

int main()

{

   

    MQAgent myAgent;

    string  sFile;

    string  sMsg;

    int     iRet;

   

            //打开

    iRet = myAgent.Init("QM01", "/home/shtc/bin");   

    printf("初始化返回值:%d[%s]/n", iRet, myAgent.GetErrorInfo());

   

            //发送

    sMsg = "我是一个好人";

    iRet = myAgent.PutMsg("00_1", sMsg.c_str(), 0, "/home/shtc/bin/QQBattleZone.EXE");

    printf("PutMsg返回值:%d[%s]/n", iRet, myAgent.GetErrorInfo());

   

            //收接

    sMsg = "";

    iRet = myAgent.GetMsg("01_1", sMsg, sFile);

    printf("GetMsg返回值:%d[%s]sMsg = [%s]/n", iRet, myAgent.GetErrorInfo(), sMsg.c_str());

   

            //收接完成后要提交

    iRet = myAgent.Commit();

    printf("Commit返回值:%d[%s]/n", iRet, myAgent.GetErrorInfo());

   

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值