amabnl / php-mqseries
一个使用PHP mqseries pecl扩展与WebSphere MQ队列管理器接口的库
dev-master
2016-02-02 16:21 UTC
Requires
- php: >=5.4.11
- psr/log: 1.0.0
Requires (Dev)
- phpunit/phpunit: 4.8.*
Suggests
- ext-mqseries: To actually use this library, you'll have to install the PECL extension mqseries
This package is not auto-updated.
Last update: 2024-09-14 18:20:42 UTC
README
一个使用PHP mqseries pecl扩展与WebSphere MQ队列管理器接口的库
目的
这个库是为了能够在PHP中使用PECL模块mqseries为WebSphere MQ队列创建队列监听器而构建的。
它帮助你创建正确的结构以连接到WebSphere MQ队列管理器。
它目前支持打开到队列管理器的连接,打开特定队列,并从队列中检索消息。
如何
- 安装WebSphere MQ客户端库。
- 安装PECL模块mqseries。从这里下载:https://pecl.php.net/package/mqseries
- 安装此库
- 连接到队列并检索消息。
代码示例
<?php use MqSeries; //Create connection: $connectParams = new Connectx\Params(); $connectParams->queueManagerName = 'QUEUEMANAGERNAME'; $connectParams->serverConnectionChannel = 'CONNECTIONCHANNEL'; $connectParams->serverIp = 'QUEUEMANAGERIPADDRESS'; $connectParams->serverPort = 6666; //Port number to connect to $connectParams->keyRepository = '/var/mqm/qmgrs/path/to/ssl/key/repository/'; //OPTIONAL SSL KEY REPO IF SSL IS USED $connectParams->responderUrl = 'http://dummy.OCSP.responder'; //OPTIONAL OCSP Responder $connectParams->sslCipherSpec = 'RC4_SHA_US'; //OPTIONAL SSL cipher spec //$connectParams->localAddress = '127.0.0.1'; //OPTIONAL: TO CONNECT FROM A SPECIFIC LOCAL NETWORK INTERFACE. //$connectParams->localPort = 16666; //OPTIONAL: TO CONNECT FROM A SPECIFIC LOCAL PORT $connectParams->options = MQSERIES_MQCNO_STANDARD_BINDING; $client = new Service( new Psr\Log\NullLogger(), $connectParams, 50000 //Default message size ); //Open Queue: $openParams = new Open\Params(); $openParams->objectDescType = MQSERIES_MQOT_Q; $openParams->objectName = 'QUEUENAME'; $openParams->objectQMName = 'QUEUEMANAGERNAME'; $openParams->option = MQSERIES_MQOO_INPUT_AS_Q_DEF | MQSERIES_MQOO_FAIL_IF_QUIESCING; try { $queueOpenResult = $client->openQueueOnQM($openParams); } catch (QueueManagerConnectionFailedException $ex) { die('Exception when opening queue: ' . $ex->getCode() . ' - ' . $ex->getMessage()); } catch (ExtensionNotLoadedException $ex) { die('YOU MUST FIRST ENABLE THE mqseries PHP EXTENSION'); } catch (NoConnectionParametersException $ex) { die('YOU DID NOT PROVIDE CONNECTX PARAMS!'); } //Get one message from queue: if ($queueOpenResult !== true) { die( 'SOMETHING WENT WRONG WHEN OPENING THE QUEUE: ' . sprintf( "CompCode:%d Reason:%d Text:%s\n", $client->getLastCompletionCode(), $client->getLastCompletionReasonCode(), $client->getLastCompletionReason() ) ); } $mqGetParams = new Get\Params(); $mqGetParams->mdMsgType = MQSERIES_MQMT_DATAGRAM; $mqGetParams->mdPersistence = MQSERIES_MQPER_NOT_PERSISTENT; $mqGetParams->mdFormat = MQSERIES_MQFMT_STRING; $mqGetParams->mdApplOriginData = 'IEDI'; $mqGetParams->mdReplyToQ = 'ERRORQUEUENAME'; $mqGetParams->mdReplyToQMgr = 'QUEUEMANAGERTOREPLYTO'; $mqGetParams->gmoOptions = MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT | MQSERIES_MQGMO_CONVERT; $mqGetParams->gmoWaitInterval = 15000; try { $messageContent = $client->getMessageFromQueue($this->makeMqGetMessageFromQParams()); catch (QueueIsEmptyException $ex) { echo "The queue is empty, no big deal."; } if (is_string($messageContent)) { echo 'message retrieved from queue: ' . $messageContent; } else { die( 'SOMETHING WENT WRONG WHEN RETRIEVING A MESSAGE: ' . sprintf( "CompCode:%d Reason:%d Text:%s\n", $client->getLastCompletionCode(), $client->getLastCompletionReasonCode(), $client->getLastCompletionReason() ) ); } //Close & disconnect: $client->close(); $client->disconnect();
版本
此库已在PHP 5.4、5.5、5.6上与WebSphere MQ客户端7.1版本以及mqseries-0.14.2一起测试过。