Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue プログラム作成の手引


10.6 メッセージの待ち合わせ

メッセージがキューに到着するまでアプリケーションで待ち合わせしたい場合は,MQGMO構造体のOptionsフィールドにMQGMO_WAITを指定してください。MQGET命令の待ち合わせ最大時間(ミリ秒)は,MQGMO構造体のWaitIntervalフィールドに設定します。

待ち合わせ最大時間内にメッセージが到着しない場合,MQGET命令はMQRC_NO_MSG_AVAILABLEの理由コードで完了します。

WaitIntervalフィールドにMQWI_UNLIMITEDを指定すると,無制限に待つことができます。しかし,ユーザの制御外にあるイベントによってアプリケーションが長く待たされることもあるので,この定数を使用する場合は注意してください。また,無制限に待ち合わせている間にアプリケーションまたはOpenTP1を終了させた場合,MQGET命令は理由コードMQRC_Q_MGR_STOPPINGで完了します。

注意

複数のアプリケーションが同じ共用キューについてメッセージの削除を待ち合わせる場合,メッセージの到着が有効になるアプリケーションは一つだけです。しかし,複数のアプリケーションがメッセージの検索を待ち合わせる場合,すべてのアプリケーションで有効になります。

待ち合わせ最大時間が経過する前に,キューまたはキューマネジャの状態が変わる場合は,次に示すとおりに動作します。