キューマネジャの属性
キューマネジャ自身にも,多数の属性があります。これらは,MQOT_Q_MGRオブジェクトをオープンするときと,オープン時に返されたハンドルを使用してMQINQ命令を呼び出すときに必要です。
- 〈このページの構成〉
属性
● CodedCharSetId(MQLONG型) 文字セット識別子
キューマネジャで使用される文字セットを定義します。この文字セットは,オブジェクトの名称,キューの作成日付・作成時刻などの,MQIで定義するすべての文字列で使用されます。文字セットは,オブジェクト名として有効な1バイト文字を持つ必要があります。この識別子は,メッセージ内のアプリケーションデータには適用されません。
この属性の値を照会するときは,MQINQ命令でMQIA_CODED_CHAR_SET_IDセレクタを使用してください。
● DeadLetterQName(MQCHAR48型) デッドレターキュー名
ローカルキューマネジャに定義されたキューの名称です。メッセージがあて先キューに届かなかったときに,そのメッセージがこのキューへ転送されます。
例えば,次の場合にこのキューへ転送されます。
-
メッセージがキューマネジャに到着したが,キューマネジャにあて先キュー(受信キュー)が定義されていなかった場合
-
メッセージがキューマネジャに到着したが,次の理由などであて先キュー(受信キュー)に格納できなかった場合
− キューが満杯のとき
− 登録が禁止されていたとき
− 送信側のノードが,キューへ登録する権限を持っていなかったとき
また,アプリケーションから直接メッセージをデッドレターキューへ登録することもできます。
報告メッセージも,通常のメッセージと同様に扱われます。つまり,報告メッセージが目的のキューに格納できなかった場合も,デッドレターキューへ転送されます。なお,この場合の目的のキューは,通常,登録元メッセージのメッセージ記述子のReplyToQフィールドに指定されたキューになります。
- 注意事項
-
保持時間が終了したメッセージが破棄されるときは,このキューへは転送されません。ただし,登録元のアプリケーションが要求していれば,保持時間終了報告メッセージ(MQRO_EXPIRATION)が生成され,ReplyToQフィールドのキューに登録されます。
MQPUT命令またはMQPUT1命令で返される理由コードで,直後にエラーが判明する場合は,メッセージはデッドレターキューへ転送されません。例えば,登録が禁止されているローカルキューへ登録した場合などは,理由コードで直後にエラーが判明します。
デッドレターキューに格納されたメッセージの中には,そのアプリケーションデータの先頭に,MQDLH構造体が付けられているものがあります。この構造体には,デッドレターキューへメッセージが転送された理由が示されます。MQDLH構造体については,「1. データタイプ」の「MQDLH構造体 − デッドレターヘッダ」を参照してください。
このキューは,Usage属性がMQUS_NORMALのローカルキューである必要があります。
キューマネジャがデッドレターキューをサポートしていない場合,または定義していない場合は,この名称はすべて空白です。
TP1/Message Queueのすべてのキューマネジャは,デッドレターキューをサポートしていますが,初期値としては定義されていません。
デッドレターキューが未定義,満杯,そのほかの理由で使用できないとき,MCAによって転送されたメッセージは,代わりに転送キューで保持されます。
この属性の値を照会するときは,MQINQ命令でMQCA_DEAD_LETTER_Q_NAMEセレクタを使用してください。
この属性の長さは,MQ_Q_NAME_LENGTHに定義されています。
● DefXmitQName(MQCHAR48型) 省略時の転送キュー名
リモートキューマネジャへメッセージを送信するときに使用される転送キューの名称です。ほかに転送キューの指定がないときに使用されます。
省略時の転送キューがない場合,この名称は空白です。
この属性の値を照会するときは,MQINQ命令でMQCA_DEF_XMIT_Q_NAMEセレクタを使用してください。
この属性の長さは,MQ_Q_NAME_LENGTHに定義されています。
● DistLists(MQLONG型) 配布リストのサポート
MQPUT命令およびMQPUT1命令で,ローカルキューマネジャが配布リストをサポートしているかどうかを示します。値は次のどちらかです。
この属性の値を確定するためには,MQINQ命令で,MQIA_DIST_LISTSセレクタを使用してください。値を変更する場合は,MQSET命令を使用してください。
● MaxHandles(MQLONG型) 最大ハンドル数
一つのタスクで同時にオープンできるハンドルの最大数です。
この属性値の範囲は,1〜999999999です。
この属性の値を照会するときは,MQINQ命令でMQIA_MAX_HANDLESセレクタを使用してください。
● MaxMsgLength(MQLONG型) 最大メッセージ長
キューマネジャで扱えるメッセージの最大長です。キューのMaxMsgLength属性は,これより大きい値をとれません。
この属性の値を照会するときは,MQINQ命令でMQIA_MAX_MSG_LENGTHセレクタを使用してください。
● MaxPriority(MQLONG型) 最大メッセージ優先度
キューマネジャがサポートするメッセージ優先度の最大値です。優先度の範囲は,0からMaxPriority属性の値までです。
この属性の値を照会するときは,MQINQ命令でMQIA_MAX_PRIORITYセレクタを使用してください。
● MaxUncommittedMsgs(MQLONG型) トランザクション完了待ち最大メッセージ数
TP1/Message Queueでは,この属性は使用されません。
この属性値は,常に0です。
この属性の値を照会するときは,MQINQ命令でMQIA_MAX_UNCOMMITTED_MSGSセレクタを使用してください。
● Platform(MQLONG型) プラットフォーム
キューマネジャが動作しているプラットフォームのアーキテクチャを示します。
MQPL_TMS_4V:TMS-4V/SP/Message Queue
この属性の値を照会するときは,MQINQ命令でMQIA_PLATFORMセレクタを使用してください。
● QMgrDesc(MQCHAR64型) キューマネジャ記述子
補足説明を記述するフィールドです。キューマネジャはこの内容を特に使用しません。このフィールドには,表示できる文字だけを使用してください。ヌル文字は使用できません。必要に応じて余りを空白で埋めてください。
- 注意事項
-
キューマネジャの文字セットにない,つまり,キューマネジャのCodedCharSetId属性で定義されていない文字は,ほかのキューマネジャへ送信したとき,正しく変換されないことがあります。
この属性の値を照会するときは,MQINQ命令でMQCA_Q_MGR_DESCセレクタを使用してください。
この属性の長さは,MQ_Q_MGR_DESC_LENGTHに定義されています。
● QMgrName(MQCHAR48型) キューマネジャ名
ローカルキューマネジャの名称です。これは,アプリケーションがキューマネジャに接続するために使用する名称です。
名称の先頭の12文字は,ユニークなメッセージ識別子が生成されるときに使用されます。詳細については,「1. データタイプ」の「MQMD構造体 − メッセージ記述子」でMsgIdフィールドの説明を参照してください。通信するキューマネジャ同士では,名称の先頭の12文字が互いに異なっている必要があります。これによって,キューマネジャのネットワークで,メッセージ識別子がユニークになります。
この属性の値を照会するときは,MQINQ命令でMQCA_Q_MGR_NAMEセレクタを使用してください。
この属性の長さは,MQ_Q_MGR_NAME_LENGTHに定義されています。
● SyncPoint(MQLONG型) トランザクション有効性
MQGET命令,MQPUT命令,およびMQPUT1命令の同期点処理をローカルキューマネジャでサポートするかどうかを示します。
MQSP_AVAILABLE:トランザクションの同期点処理をサポートします。
MQSP_NOT_AVAILABLE:トランザクションの同期点処理をサポートしません。
この属性の値を照会するときは,MQINQ命令でMQIA_SYNCPOINTセレクタを使用してください。
● TriggerInterval(MQLONG型) トリガ間隔
トリガメッセージの数を抑制するために使用される時間間隔で,単位はミリ秒です。この属性は,TriggerType属性がMQTT_FIRSTのときだけ有効です。MQTT_FIRSTのときは,通常,空のキューに適切なメッセージが到着したときだけ,トリガメッセージが通知されます。ただし,MQTT_FIRSTの場合でもキューが空ではない場合に特別なトリガメッセージを通知させることができます。これらの特別なトリガメッセージは,TriggerInterval属性の時間間隔より頻繁に通知されることはありません。
トリガについては,マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。
この属性値の範囲は,0〜999999999です。
この属性の値を照会するときは,MQINQ命令でMQIA_TRIGGER_INTERVALセレクタを使用してください。