PHP/Linux を使用して MQ への接続に成功している人はいますか? 何日もの間、私は必死にこれを機能させようとしてきましたが、役に立ちませんでした。これをやっている人がいたら、どうやって?
私が見ているように、使用する拡張機能は 2 つあります: a) mqseries -> C API への薄いラッパー b) SAM 1.1.0 -> より一般的なアプローチを取る
両方を試しましたが、a) MQCONNX は正常に実行できますが、MQOPEN は実行できず、b) MQCONN ステージを通過できません。7 クライアントと 6 クライアントの両方を試しました。私たちのサーバーは 6.0.0.0 を実行しています。
ノート; 何年もの間、.NET を使用してサーバーに正常に接続してきました。
だから、これは私がこれまでにやったことです:
- RPM パッケージから MQClient をインストールしました
- IA94/XMSをインストール
- sam_xms.so 拡張機能のビルドに成功し、それを php.ini に含めました
- mqseries.so 拡張機能のビルドに成功し、それも含めました。
- mq クライアント インストール (amqsputc および amqsgetc) からサンプルを正常に実行し、メッセージをやり取りしています。
mqseries PECL 拡張機能を使用すると、次のエラーが表示されます。
MQOPEN failed; CompCode:2 Reason:2044 Text:2044
SAM PECL 拡張機能を使用すると、代わりに次のようになります。
<--SAMConnection.SetDebug()
-->SAMConnection.Connect()
-->SAMConnection.Create(proto=wmq:client)
SAMConnection.Create() get_cfg_var() ""
SAMConnection.Create() calling factory - SAM/sam_factory_xms.php
SAMConnection.Create() rc = SAMXMSConnection
<--SAMConnection.Create()
SAMConnection.Connect() connection created for protocol wmq:client
SAMConnection.Connect() connect failed (208) Unable to create XMS connection!
<--SAMConnection.Connect() rc=
-->SAMConnection.IsConnected()
SAMConnection.IsConnected() isconnected failed (208) Unable to create XMS connection!
<--SAMConnection.IsConnected() rc=
Connection failed (208) Unable to create XMS connection!
これらのエラーはいずれも、/var/mqm/errors に何も生成しません...
mqseries のサンプル コードは次のとおりです。
mqseries_conn('MQED', $conn, $comp_code, $reason);
if ($comp_code !== MQSERIES_MQCC_OK) {
printf("<br>MQCONNX failed; Connx CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, $reason);
exit;
}
else
{
printf("<br>MQCONNX successful: Connx CompCode:%d Reason:%d Text:%s<br>\n<br>", $comp_code, $reason, $reason);
}
$mqods = array('ObjectName'=>'MYPUTQUEUE');
mqseries_open($conn, $mqods,
MQSERIES_MQOO_INPUT_AS_Q_DEF | MQSERIES_MQOO_FAIL_IF_QUIESCING | MQSERIES_MQOO_OUTPUT,
$obj, $comp_code,$reason);
if ($comp_code !== MQSERIES_MQCC_OK) {
printf("<br><br>MQOPEN failed; CompCode:%d Reason:%d Text:%s<br><br>",
$comp_code,
$reason,
$reason);
}
else
{
printf("<br><br>MQOPEN successful; CompCode:%d Reason:%d Text:%s<br><br>",
$comp_code,
$reason,
$reason);
}
SAM 拡張機能を使用したサンプル コードは次のとおりです。
$conn->connect(SAM_WMQ_CLIENT, array(SAM_BROKER => 'MQED',SAM_TRANSACTIONS => SAM_MANUAL));
if($conn->isConnected())
{
$msg = new SAMMessage('MY MESSAGE');
$msg->header->SAM_REPLY_TO = 'MYGETQUEUE';
$correlid = $conn->send('MYPUTQUEUE', $msg);
if (!$correlid) {
// The Send failed!
echo "Send failed ($conn->errno) $conn->error";
} else {
$resp = $conn->receive('MYGETQUEUE', array(SAM_CORRELID => $correlid));
}
$conn->disconnect();
}
else
{
echo "Connection failed ($conn->errno) $conn->error";
}
よろしくお願いします!
これは、PHP を使用して MQ に接続しようとするの説明の続きであることに注意してください。もうすぐそこ
更新 #1: MQPUT1 は機能しますが、MQOPEN はまだ 2044 を返します。