函数名:mqseries_get()
适用版本:PHP 7.0.0 及以上版本
用法:mqseries_get() 函数用于从 IBM MQ 队列中获取消息,并将其存储在一个数组中。
语法:mqseries_get(resource $hconn, resource $hobj, array &$md, array &$gmo, int &$bufferlength, string &$buffer, int &$data_length, int &$comp_code, int &$reason)
参数:
返回值:如果成功获取消息,则返回 true;如果没有消息可用或者发生错误,则返回 false。
示例:
// 创建 MQ 连接
$conn_options = array(
MQSERIES_MQCNO_HANDLE_SHARE_BLOCK,
MQSERIES_MQCNO_RECONNECT,
);
$hconn = mqseries_conn('QMGR', $conn_options);
// 打开 MQ 队列
$open_options = array(
MQSERIES_MQOO_INPUT_AS_Q_DEF,
);
$hobj = mqseries_open($hconn, 'QUEUE', $open_options);
// 准备消息描述符
$md = array(
'MsgType' => MQSERIES_MQMT_REQUEST,
'Feedback' => MQSERIES_MQFB_NONE,
);
// 准备获取选项
$gmo = array(
'Options' => MQSERIES_MQGMO_WAIT | MQSERIES_MQGMO_CONVERT,
'WaitInterval' => MQSERIES_MQWI_UNLIMITED,
);
// 定义缓冲区大小
$bufferlength = 1024;
// 接收消息
$buffer = '';
$data_length = 0;
$comp_code = 0;
$reason = 0;
$result = mqseries_get($hconn, $hobj, $md, $gmo, $bufferlength, $buffer, $data_length, $comp_code, $reason);
if ($result) {
echo "成功获取消息:\n";
echo "消息类型:" . $md['MsgType'] . "\n";
echo "消息数据:" . $buffer . "\n";
} else {
echo "获取消息失败,原因代码:" . $reason . "\n";
}
// 关闭 MQ 队列
mqseries_close($hconn, $hobj);
// 断开 MQ 连接
mqseries_disc($hconn);
注意事项: