MQXQH構造体 - 転送キューヘッダ
MQXQH構造体は,次のフィールドから構成されます。
フィールド(データタイプ) | 内容 | 初期値 |
---|---|---|
StrucId(MQCHAR4型) | 構造体識別子 | MQXQH_STRUC_ID |
Version(MQLONG型) | 構造体バージョン番号 | MQXQH_VERSION_1 |
RemoteQName(MQCHAR48型) | リモートキュー名 | ヌル文字列/空白 |
RemoteQMgrName(MQCHAR48型) | リモートキューマネジャ名 | ヌル文字列/空白 |
MsgDesc(MQMD構造体) | 登録元メッセージ記述子 | 該当しない |
概要
目的
MQXQH構造体は,転送キューにメッセージを格納するときに使用されます。そのメッセージの先頭には,この構造体が付けられます。転送キューは,リモートキューへ送信するときに,一時的にメッセージを格納する特別なローカルキューです。したがって,ローカルキューマネジャに属するキューへの転送には使用しません。転送キューは,Usage属性がMQUS_TRANSMISSIONのキューです。
フォーマット名
MQFMT_XMIT_Q_HEADER
文字セットおよびマシンコード
MQXQH構造体のデータは,ローカルキューマネジャの文字セットおよびマシンコードに従います。それぞれキューマネジャのCodedCharSetId属性およびMQENC_NATIVEで指定します。
MQXQH構造体の文字セットおよびマシンコードは,次に示す構造体中のCodedCharSetIdおよびEncodingフィールドに設定する必要があります。
使用方法
転送キューにあるメッセージには,次に示す二つのメッセージ記述子があります。
分離メッセージ記述子のフィールド
分離メッセージ記述子は,キューマネジャによって次のように設定されます。キューマネジャがバージョン2をサポートしていない場合は,バージョン1のMQMD構造体フィールドがすべて使用されます。
MQMD構造体のフィールド | 使用される値 |
---|---|
StrucId | MQMD_STRUC_ID |
Version | MQMD_VERSION_2 |
Report | 埋め込みメッセージ記述子から複写されますが,MQRO_ACCEPT_UNSUP_IF_XMIT_MASKで識別されるビットが0に設定されます。これによって,メッセージが転送キューに到着したとき,または転送キューから取り出されたとき,COAまたはCOD報告が生成されません。 |
MsgType | 埋め込みメッセージ記述子から複写 |
Expiry | 埋め込みメッセージ記述子から複写 |
Feedback | 埋め込みメッセージ記述子から複写 |
Encoding | MQENC_NATIVE |
CodedCharSetId | キューマネジャのCodedCharSetId |
Format | MQFMT_XMIT_Q_HEADER |
Priority | 埋め込みメッセージ記述子から複写 |
Persistence | 埋め込みメッセージ記述子から複写 |
MsgId | キューマネジャによって生成される新しい値が使用されます。このメッセージ記述子は,キューマネジャが埋め込みメッセージ記述子に生成するMsgIdフィールドとは異なります。 |
CorrelId | 埋め込みメッセージ記述子のCorrelIdフィールド |
BackoutCount | 0 |
ReplyToQ | 埋め込みメッセージ記述子から複写 |
ReplyToQMgr | 埋め込みメッセージ記述子から複写 |
UserIdentifier | 埋め込みメッセージ記述子から複写 |
AccountingToken | 埋め込みメッセージ記述子から複写 |
ApplIdentityData | 埋め込みメッセージ記述子から複写 |
PutApplType | MQAT_QMGR |
PutApplName | キューマネジャ名称の先頭28バイト |
PutDate | メッセージが転送キューに登録された日 |
PutTime | メッセージが転送キューに登録された時間 |
ApplOriginData | 空白 |
GroupId | MQGI_NONE |
MsgSeqNumber | 1 |
Offset | 0 |
MsgFlags | MQMF_NONE |
OriginalLength | MQOL_UNDEFINED |
埋め込みメッセージ記述子のフィールド
埋め込みメッセージ記述子のフィールドは,次に示す場合を除いて,MQPUT命令またはMQPUT1命令のMsgDesc引数と同じ値です。
バージョン2のフィールドがある場合は,MQMD構造体から削除され,MQMDE構造体に移動されます。これは,バージョン2フィールドの一つ以上の値が初期値以外の場合です。
リモートキューへのメッセージの登録
アプリケーションが,リモートキューに直接指定してメッセージを登録する場合,またはリモートキューのローカル定義を使用してメッセージを登録する場合,ローカルキューマネジャは,次の処理をします。
転送キューに直接メッセージを登録する方法
アプリケーションは,転送キューに直接メッセージを登録することもできます。この場合,アプリケーションはMQXQH構造体をアプリケーションメッセージデータの前に設定し,フィールドを適切な値で初期化しなければなりません。また,アプリケーションが,MQPUT命令またはMQPUT1命令で指定したメッセージ記述子のMQMD構造体のFormatフィールドに,MQFMT_XMIT_Q_HEADERを設定しなければなりません。
アプリケーションによって作成されたMQXQH構造体の文字データは,MQPUT命令またはMQPUT1命令で指定されたMsgDesc引数のCodedCharSetIdフィールドで定義された文字集合に含まれなければなりません。整数データも,そのメッセージ記述子のEncodingフィールドで定義されたマシンコード変換形式に含まれなければなりません。また,MQXQH構造体の文字データは,定義されたフィールドの長さまで空白で埋められなければなりません。キューマネジャは,MQXQH構造体の中のヌル文字とそれに続く文字を空白に変換しません。したがって,データ文字列の終わりにヌル文字を使用してなりません。
キューマネジャはMQXQH構造体が存在するかどうか,およびフィールドに有効な値が指定されているかどうかをチェックしません。注意してください。
転送キューからメッセージを取り出す方法
転送キューからメッセージを取り出すアプリケーションは,MQXQH構造体の情報を適切な方法で処理しなければなりません。アプリケーションメッセージデータの始めにMQXQH構造体が存在するかどうかは,MQGET命令のMsgDesc引数のFormatフィールドに返される値であるMQFMT_XMIT_Q_HEADERで示されます。
MsgDesc引数のCodedCharSetIdフィールドおよびEncodingフィールドに返される値は,それぞれMQXQH構造体の文字データの文字集合と,整数データのコード変換形式を示します。アプリケーションメッセージデータの文字集合とコード変換形式は,埋め込みメッセージ記述子のCodedCharSetIdフィールドとEncodingフィールドで定義されます。
フィールド
構造体を構成するフィールドについて,アルファベット順に説明します。
● MsgDesc(MQMD構造体) 登録元メッセージ記述子
アプリケーションがメッセージをリモートキューへ送信したときのMQPUT命令またはMQPUT1命令で,MsgDesc引数に指定されたメッセージ記述子MQMD構造体の複写です。
この構造体の各フィールドの初期値は,MQMD構造体の各フィールドの初期値と同じです。
● RemoteQMgrName(MQCHAR48型) リモートキューマネジャ名
メッセージの表面上の最終あて先であるキューを保持するキューマネジャの名前です。
メッセージが配布リストメッセージの場合,RemoteQMgrNameフィールドは空白となります。
このフィールドの長さは,MQ_Q_MGR_NAME_LENGTHに定義されています。
このフィールドの初期値は,C言語ではヌル文字列です。そのほかのプログラミング言語では,48個の空白です。
● RemoteQName(MQCHAR48型) リモートキュー名
メッセージの表面上のあて先キューの名称です。これは,キューの実名と異なる場合があります。例えば,ほかのリモートキューのローカル定義として,RemoteQMgrNameのリモートキューマネジャに定義された場合などです。
メッセージが配布リストメッセージのとき,つまり,MQMD構造体のFormatフィールドがMQFMT_DIST_HEADERであるとき,RemoteQNameフィールドは空白です。
このフィールドの長さは,MQ_Q_NAME_LENGTHに定義されています。
このフィールドの初期値は,C言語ではヌル文字列です。そのほかのプログラミング言語では,48個の空白です。
● StrucId(MQCHAR4型) 構造体識別子
次の値を取ります。
このフィールドの初期値はMQXQH_STRUC_IDです。
● Version(MQLONG型) 構造体バージョン番号
次の値を取ります。
次の定数には,現在のバージョンのバージョン番号を指定します。
このフィールドの初期値はMQXQH_VERSION_1です。