9.5 MQPUT1命令によるキューへの1メッセージの登録
1メッセージを登録したあとでキューを即時にクローズするには,MQPUT1命令を使用してください。例えば,サーバアプリケーションで各キューに応答メッセージを送信する場合などにMQPUT1命令を使用します。
MQPUT1命令は,MQOPEN命令,MQPUT命令,およびMQCLOSE命令の順で命令を発行するのと機能的に同等です。MQPUT命令とMQPUT1命令の違いは,MQPUT命令ではオブジェクトハンドルの指定が必要で,MQPUT1命令ではMQOPEN命令で定義するのと同じオブジェクト記述子の指定が必要ということです。オブジェクト記述子(MQOD構造体)を指定することによって,オープンするキューについての情報をMQPUT1命令に設定します。
MQPUT1命令の入力として,次に示す項目を指定してください。
-
コネクションハンドル(HCONN)
-
オープンしたいキューのオブジェクト記述子(MQOD構造体)
-
キューに登録したいメッセージのメッセージ記述子(MQMD構造体)
-
制御情報
メッセージ登録オプション(MQPMO構造体)
-
メッセージに含まれるデータ長(MQLONG)
-
メッセージデータ本体
MQPUT1命令の出力を次に示します。
-
理由コード(MQLONG)
-
完了コード(MQLONG)
成功する場合,命令はメッセージ登録オプションとメッセージ記述子にも値を返します。命令はオプションを更新し,メッセージが送信されたキューマネジャとキューの名前が設定されます。登録したメッセージの識別子に対してユニークな値をキューマネジャに生成させたい場合は,2進数の0をMQMD構造体のMsgIdフィールドに指定してください。ユーザに構造体を返す前に,命令は値をMsgIdフィールドに設定します。
- 注意
-
MQPUT1命令にモデルキュー名は使用できません。ただし,モデルキューをオープンしたあとは,MQPUT1命令を動的キューに発行できます。
MQPUT1命令の入力パラメタについて説明します。
- Hconn
-
コネクションハンドルです。MQCONN命令で返されたコネクションハンドルを指定してください。
- ObjDesc
-
オブジェクト記述子(MQOD構造体)です。
ObjectNameおよびObjectQMgrNameフィールドには,メッセージを登録したいキューの名前とそれを保持するキューマネジャの名前を指定してください。
DynamicQNameフィールドは,MQPUT1命令ではモデルキューが使用できないので無視されます。
キューをオープンするための権限を確認するのに使用する代替ユーザ識別子を指定するときは,AlternateUserIdフィールドを使用してください。
- MsgDesc
-
メッセージ記述子(MQMD構造体)です。MQPUT命令と同様に,キューに登録するメッセージを定義するのに使用してください。
- PutMsgOpts
-
メッセージ登録オプション(MQPMO構造体)です。MQPUT命令と同様に使用します。
Optionsフィールドが0に設定される場合,キューにアクセスする権限を確認するときに,キューマネジャはユーザ独自のユーザIDを使用します。また,キューマネジャはMQOD構造体のAlternateUserIdフィールドにある代替ユーザ識別子を無視します。
- BufferLength
-
ユーザメッセージの長さです。
- Buffer
-
メッセージのテキストがあるバッファ領域です。
クラスタを使用するとき,MQPUT1命令はMQOO_BIND_NOT_FIXEDが有効であるのと同じように動作します。アプリケーションはMQOD構造体ではなく,MQPMO構造体の解決されたフィールドを使用して,メッセージの送信先を決定します。