10.2.3 MQGMO構造体によるオプションの指定
MQGMO構造体は,MQGET命令にオプションを渡すための入出力用の値です。
次に示すフィールドがあります。
- StrucId
-
メッセージ取り出しオプション構造体を識別します。4文字のフィールドです。常にMQGMO_STRUC_IDを指定してください。
- Version
-
構造体のバージョン番号を記述します。デフォルトはMQGMO_VERSION_1です。バージョン2のフィールドを使用したい場合,または論理的順序でメッセージを取り出したい場合は,MQGMO_VERSION_2を指定してください。
MQGMO_CURRENT_VERSIONを指定する場合,アプリケーションは常に最新のバージョンを使用します。
- Options
-
アプリケーションコード内で,必要なオプションを任意の順序で指定します。
Optionsフィールドは,次に示す項目を制御します。
-
完了前にMQGET命令がメッセージのキューへの到着を待ち合わすか
-
登録操作がトランザクションに参加するか
-
ファーストメッセージ機能を有効にし,非永続メッセージを同期点外で取り出すか
-
キューからメッセージを削除するか,検索するだけか
-
検索カーソルまたはその他の基準によってメッセージを選択するか
-
メッセージがバッファよりも長い場合に命令を成功させるか
-
キューマネジャが停止状態のときに命令が失敗するか
-
メッセージデータの変換をするか
-
メッセージとセグメントをキューから取り出す順序
-
完全な論理メッセージだけを取り出すか
-
グループ内の全メッセージが利用できるときだけに,グループ内のメッセージを取り出すか
-
論理メッセージ内の全セグメントが利用できるときだけに,論理メッセージ内のセグメントを取り出すか
Optionsフィールドをデフォルトの値に(MQGMO_NO_WAIT)する場合は,MQGET命令は次に示すとおりに動作します。
-
選択基準に合うメッセージがキューにない場合,命令はメッセージの到着を待たないで即時に完了します。
-
TP1/Message Queueでは,同期点を指定した命令は無効になります。
-
選択されたメッセージはキューから検索ではなく削除されます。
-
アプリケーションデータの変換は実行されません。
-
メッセージがバッファよりも長い場合は,命令は失敗します。
-
- WaitInterval
-
WaitIntervalフィールドは,MQGMO_WAIT指定時にメッセージのキューへの到着をMQGET命令が待ち合わせる最大時間(ミリ秒)を指定します。時間内にメッセージが到着しない場合に命令は完了し,選択基準に合うメッセージがキューにないことを示す理由コードを返します。
- Signal1
-
TP1/Message Queueではサポートしません。
- Signal2
-
TP1/Message Queueではサポートしません。
- ResolvedQName
-
ResolvedQNameフィールドは,出力用のフィールドです。キューマネジャがメッセージを取り出したキューの名前を別名の解決後に返します。
- MatchOptions
-
MatchOptionsフィールドは,MQGET命令の選択基準を制御します。
- GroupStatus
-
GroupStatusフィールドは,取り出したメッセージがグループ内にあるかを示します。
- SegmentStatus
-
SegmentStatusフィールドは,取り出した項目が論理メッセージのセグメントであるかを示します。
- Segmentation
-
Segmentationフィールドは,取り出したメッセージにセグメント分割を許可するかを示します。