MQODは次のようになります。私は、モジュールがデフォルトで埋めた場合に思ったんだけど、あなたはハッシュで、その後上書きさせて頂いており
/****************************************************************/
/* MQOD Structure -- Object Descriptor */
/****************************************************************/
typedef struct tagMQOD MQOD;
typedef MQOD MQPOINTER PMQOD;
typedef PMQOD MQPOINTER PPMQOD;
struct tagMQOD {
MQCHAR4 StrucId; /* Structure identifier */
MQLONG Version; /* Structure version number */
MQLONG ObjectType; /* Object type */
MQCHAR48 ObjectName; /* Object name */
MQCHAR48 ObjectQMgrName; /* Object queue manager name */
MQCHAR48 DynamicQName; /* Dynamic queue name */
MQCHAR12 AlternateUserId; /* Alternate user identifier */
/* Ver:1 */
MQLONG RecsPresent; /* Number of object records
present */
MQLONG KnownDestCount; /* Number of local queues opened
successfully */
MQLONG UnknownDestCount; /* Number of remote queues opened
successfully */
MQLONG InvalidDestCount; /* Number of queues that failed to
open */
MQLONG ObjectRecOffset; /* Offset of first object record
from start of MQOD */
MQLONG ResponseRecOffset; /* Offset of first response record
from start of MQOD */
MQPTR ObjectRecPtr; /* Address of first object record */
MQPTR ResponseRecPtr; /* Address of first response
record */
/* Ver:2 */
MQBYTE40 AlternateSecurityId; /* Alternate security identifier */
MQCHAR48 ResolvedQName; /* Resolved queue name */
MQCHAR48 ResolvedQMgrName; /* Resolved queue manager name */
/* Ver:3 */
MQCHARV ObjectString; /* Object long name */
MQCHARV SelectionString; /* Message Selector */
MQCHARV ResObjectString; /* Resolved long object name*/
MQLONG ResolvedType; /* Alias queue resolved object type */
/* Ver:4 */
};
#define MQOD_DEFAULT {MQOD_STRUC_ID_ARRAY},\
MQOD_VERSION_1,\
MQOT_Q,\
{""},\
{""},\
{"AMQ.*"},\
{""},\
0,\
0,\
0,\
0,\
0,\
0,\
NULL,\
NULL,\
{MQSID_NONE_ARRAY},\
{""},\
{""},\
{MQCHARV_DEFAULT},\
{MQCHARV_DEFAULT},\
{MQCHARV_DEFAULT},\
MQOT_NONE
。もしそうなら、 'DeviceName'は本当に正しいキーですか?私はそれがWMQのフィールド名または定数と一致すると思います。
更新:提供されたリンクでthe exampleになると、ハッシュキーは実際にcmqc.hのフィールド名と一致します。
#2応答がコメントする
更新:cmqc.hで定義されたオブジェクトの種類は次のとおりです。
/* Object Types */
#define MQOT_NONE 0
#define MQOT_Q 1
#define MQOT_NAMELIST 2
#define MQOT_PROCESS 3
#define MQOT_STORAGE_CLASS 4
#define MQOT_Q_MGR 5
#define MQOT_CHANNEL 6
#define MQOT_AUTH_INFO 7
#define MQOT_TOPIC 8
#define MQOT_CF_STRUC 10
#define MQOT_LISTENER 11
#define MQOT_SERVICE 12
#define MQOT_RESERVED_1 999
PHP、Perlや他の多くの同様の努力の私の理解では、彼らは上で非常に薄いラッパーであるということですC API。 Perlは単にcmqc.hと他のCインクルードファイルから直接ほとんどのコードを生成するので、すべてのフィールド名とデフォルトはそれらのインクルードファイルと正確に一致します。このモジュールは同様のアプローチを取っているように見え、必要に応じて定義された名前とフィールドのデフォルトを使用することが期待されます。追加のコメントに
$mqods = array(
'StrucID'=>'OD ',
'Version'=>1.
'ObjectType'=>1,
'ObjectName'=>'MYPUTQUEUE',
'ObjectQMgrName'=>'MYQUEUEMANAGER'
'DynamicQName'='',
'AlternateUserId'='',
'RecsPresent'=>0,
'KnownDestCount'=>0,
'UnknownDestCount'=>0,
'InvalidDestCount'=>0,
'ObjectRecOffset'=>0,
'ResponseRecOffset'=>0,
'ObjectRecPtr'=>NULL,
'ResponseRecPtr'=>NULL
);
アップデート#3応答する:
私のような何かを考えている
が
QモンシニョールはMQODのいずれかのバージョンを受け入れますが、機能のそのレベルにフォールバックします。 v1を使用している場合は、それが動作することをテストできます。それ以降のバージョンのMQODを使用する場合は、追加のフィールドをハッシュに追加する必要があります。
2009年は「Connection Broken」です。基本的にQMgrは何か気に入らず、接続を終了しました。通常、戻りコードの意味のあるエラーメッセージは/var/mqm/qmgrs/<qmgrname>/errors/AMQEER01.LOG
です。
*私はQueueManagerへの接続を正常に作成しましたが、それは次のステップ(MQCONN)中に私が悲惨に失敗したことです... *あなたが失敗したMQOpen上にあることを意味しますか? –
はい、申し訳ありません。私は私の質問を編集しました。 – eriben
私はPHPモジュールに精通していませんが、 'DeviceName'はキュー名の奇妙なキーのようです。 –