php ibm mq,php linux IBM MQ安装以及php对接

centos7 64位安装IBM MQ

我这里下载的是mq8.0版本,9.0的没有试,下载地址

https://pan.baidu.com/s/11GCnMDBp_T8k7XqMEqdK8g 提取码:hzcm

下载下来解压

tar -zxvf mqadv_dev80_linux_x86-64.tar.gz

cd MQServer 进入目录

./mqlicense.sh 执行授权信息

开始安装mq

rpm -U MQSeriesRuntime-8.0.0-4.x86_64.rpm

rpm -U  MQSeriesSDK-8.0.0-4.x86_64.rpm

rpm -U MQSeriesServer-8.0.0-4.x86_64.rpm

rpm -U MQSeriesClient-8.0.0-4.x86_64.rpm

rpm -U MQSeriesSamples-8.0.0-4.x86_64.rpm

安装过程创建了一个名为 mqm 的用户和一个同样名为 mqm 的组。此时,新用户是被锁定的,您必须设置一个密码来解锁,可用 passwd 命令做到这一点

执行passwd mqm 设置用户密码

现在mq需要的东西都安装好了

开始设置环境变量,方便执行命令

vi /etc/profile

添加到到末尾

export PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/bin

export PATH=$PATH:/opt/mqm/samp/bin

开始测试一个简单的队列:

切换到mqm 这个用户下执行命令

su mqm

crtmqm Q2 创建队列Q2

strmqm Q2 启动队列

runmqsc Q2 进入队列管理命令

执行命令:

定义一个本地队列

DEFINE QLOCAL ('Queue') DEFPSIST (YES) MAXDEPTH(100) REPLACE

定义一个通道,名称是CHAN_SERVER_CON

DEFINE CHANNEL('CHAN_SERVER_CON') CHLTYPE(SVRCONN) REPLACE

定义一个监听器

DEFINE LISTENER('LISTENER.TCP') TRPTYPE(TCP) CONTROL(QMGR) PORT(1414) REPLACE

开启监听

START LISTENER('LISTENER.TCP')

这样netstate -antp 就可以看到刚才监听的端口了

退出管理器,输入end

测试下队列:

amqsput Queue Q2

8dbcf3baecb13db8cc469a374dce5147.png

输入信息test,双击回车就结束了

获取队列内容:

0effcb240cbfa2a69505eec5e32cefc3.png

现在已经可以了

php 扩展安装

解压,进去目录:

执行phpize

./configure --with-php-config=/www/server/php/72/bin/php-config --with-libdir=lib64

--with-php-config 这个是php-config文件的位置

--with-libdir 64位的要加这个不然会报错

make&&make install

执行成功后会有个so的文件,开启PHP的扩展

修改php.ini配置文件。添加

extension=mqseries.so

查看下扩展是否成功

php -m |grep mqseries

有的话就是安装成功了

现在开始测试php代码

$mqcno=array('Version'=>MQSERIES_MQCNO_VERSION_2,'Options'=>MQSERIES_MQCNO_STANDARD_BINDING,'MQCD'=>array('ChannelName'=>'CHAN_SERVER_CON',//刚才创建的通道名称'ConnectionName'=>'127.0.0.1(1414)','TransportType'=>MQSERIES_MQXPT_TCP));

mqseries_connx('Q2',$mqcno,$conn,$comp_code,$reason);if($comp_code!==MQSERIES_MQCC_OK) {printf("Connx CompCode:%d Reason:%d Text:%s
n",$comp_code,$reason, mqseries_strerror($reason));exit;}$objDesc=array('ObjectName'=>'Queue');//队列的名称mqseries_open($conn,$objDesc,MQSERIES_MQOO_INPUT_AS_Q_DEF|MQSERIES_MQOO_FAIL_IF_QUIESCING|MQSERIES_MQOO_OUTPUT,$obj,$comp_code,$reason);// echo mqseries_strerror($reason);// var_dump($reason);// die();$mdg=array();$gmo=array('Options'=>MQSERIES_MQGMO_FAIL_IF_QUIESCING|MQSERIES_MQGMO_WAIT,'WaitInterval'=>3000);mqseries_get($conn,$obj,$mdg,$gmo,255,$msg,$data_length,$comp_code,$reason);if($comp_code!==MQSERIES_MQCC_OK) {printf("GET CompCode:%d Reason:%d Text:%s
",$comp_code,$reason, mqseries_strerror($reason));}var_dump($msg);$md=array('Version'=>MQSERIES_MQMD_VERSION_1,'Expiry'=>MQSERIES_MQEI_UNLIMITED,'Report'=>MQSERIES_MQRO_NONE,'MsgType'=>MQSERIES_MQMT_DATAGRAM,'Format'=>MQSERIES_MQFMT_STRING,'Priority'=>1,'Persistence'=>MQSERIES_MQPER_PERSISTENT);$pmo=array('Options'=>MQSERIES_MQPMO_NEW_MSG_ID|MQSERIES_MQPMO_SYNCPOINT);mqseries_put($conn,$obj,$md,$pmo,'test mqseries_put'.time(),$copCode,$reason);var_dump($reason);mqseries_close($conn,$obj,MQSERIES_MQCO_NONE,$comp_code,$reason);

mqseries_disc($conn,$comp_code,$reason);die();

命令行模式下调用这个php文件

php mq.php

这是用root用户执行的,默认会报

Connx CompCode:2 Reason:2035 Text:Not authorized for access

用mqm用户,执行下面命令,给通道,管理器,队列都添加上所有权限

setmqaut -m Q2 -n CHAN_SERVER_CON -t channel -p root +all 添加通道权限

setmqaut -m Q2 -t qmgr -p root  +all 添加管理器权限

setmqaut -m Q2 -n Quue -t queue -p mqm +all 添加队列权限

就可以了

也可以禁用到用户权限

#修改连接认证策略

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)

#或者关闭连接认证

ALTER QMGR CONNAUTH(' ')

#最后刷新连接认证策略

REFRESH SECURITY TYPE(CONNAUTH)

这里我没测试成功,应该是可以的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值