メッセージの受信は、メッセージをメッセージキューから取り出す機能です。メッセージの受信は、プログラムインタフェースの“MQDGETMSG”または“mqd_getmsg”により行うことができます。メッセージの受信が正常終了するとメッセージはメッセージキューから削除されます。メッセージの受信の方法には以下があります。
同期モード
非同期モード
同期モードのメッセージ受信は、すでにメッセージキューにメッセージがある場合には、直ちにメッセージを取り出します。メッセージキューにメッセージがない場合には、メッセージが到着するまで待ち合わせます。
非同期モードのメッセージ受信は、すでにメッセージキューにメッセージがある場合には、直ちにメッセージを取り出します。メッセージキューにメッセージがない場合には、メッセージ到着を待ち合わせずにアプリケーションに復帰します。
1ユニット複数メッセージを受信する場合には、メッセージヘッダのユニット終了フラグが“ON”になるまでメッセージを受信した場合に限り受信が完了したとみなされます。途中で処理を打ち切った場合には、それまでの処理は取り消されます。したがって、再度メッセージを受信すると、再び同じユニット内の先頭メッセージから取り出されます。
なお、メッセージの受信を行う場合は、以下のことに留意する必要があります。
一つのアプリケーションが、1ユニット複数メッセージを複数のメッセージキューから受信する場合、必ずメッセージキューごとにユニット内の全メッセージを受信するようにしてください。これに違反した場合は、処理結果が保証されません。
複数のアプリケーションが、同じメッセージキューから同時に受信することは避けてください。1ユニット複数メッセージの場合は、処理結果が保証されません。単一メッセージの場合は、先に受信要求を行ったアプリケーションにメッセージが渡ります。