メッセージキューは、アプリケーションがメッセージ交換を行うときに一時的にメッセージを格納しておく場所です。ここでは、メッセージキューについて以下を説明します。
メッセージ保証レベル
プライオリティ
メッセージキューの属性
メッセージキューの状態変移
メッセージキューには、以下の二つのメッセージ保証レベルがあります。
メモリ型
ディスク型
メモリ型のメッセージキューは、アプリケーションが送信したメッセージをMQDが動作している間だけメモリ上で管理します。メモリだけを使用してメッセージ通信を行うため、高性能なレスポンスを得ることができます。ただし、システムダウンが発生したり、MQDを停止した場合は、メッセージキュー上に残っているメッセージが失われるため、信頼性が低下します。
なお、メッセージ格納ファイルとしてデータベースを使用した場合、メモリ型のメッセージキューは使用できません。
ディスク型のメッセージキューは、アプリケーションが送信したメッセージをハードディスク上で管理します。システムダウン、通信回線異常やMQDの停止によりメッセージが失われることがないため、高信頼なメッセージ通信を行うことができます。ただし、メモリ型に比べて処理性能が低下します。
ディスク型のメッセージキューを格納するファイルとして、一般のファイルシステムとデータベースを利用することができます。データベースを利用することで、メッセージ格納ファイルの大容量化や複数デバイスへの配置がデータベースの機能を使用して実現可能になります。
なお、利用できるデータベース管理システムはSymfoware/RDBです。
注意
データベース管理システムの機能を直接使用した場合は、MQDシステムを壊すおそれがあるため、“5.3 メッセージ格納ファイルとしてデータベースを使用する場合の保守”で説明する保守操作以外は行わないでください。MQDシステムが使用しているデータベースを直接操作した場合、MQDシステムの動作は保証されません。また、保守操作を行う上でも十分な注意が必要です。データベース管理システムの機能を十分理解して操作を行ってください。
プライオリティとは、メッセージ送受信処理の優先度です。プライオリティを変えることにより、緊急のメッセージを優先的に処理させることができます。
プライオリティは、以下に示す高レベルから低レベルまでの複数の段階があり、メッセージの送信時にアプリケーションが指定します。
1(高レベル)から3(低レベル)までの3段階
1(高レベル)から7(低レベル)までの7段階
プライオリティの指定を省略した場合は、メッセージキューにあるプライオリティの省略値が適用されます。1ユニット複数メッセージの場合は、ユニット内の先頭メッセージのプライオリティが使用されます。
メッセージキュー上のメッセージは、以下の契機でメッセージキューから取出すときに、より高いプライオリティのメッセージから優先的に処理されます。
メッセージ送信時は、相手システムへメッセージを送信するとき。MQD内の場合は、受信側アプリケーションがメッセージ受信を要求したとき
メッセージ受信時は、受信側アプリケーションがメッセージ受信を要求したとき
メッセージキューの属性には以下の二つがあります。
定義情報
運用情報
定義情報には、以下のものがあり、メッセージキューを作成するときに指定します。
メッセージキュー名
メッセージ保証レベル
メッセージの最大長
プライオリティの省略値
運用情報には、以下のものがあり、プログラムインタフェースまたはコマンドにより取得することができます。
メッセージキューの作成日時
メッセージキューの最終更新日時
メッセージキュー内のメッセージ数
メッセージキューのアクセス状態
メッセージキューには以下の状態があります。図2.6 メッセージキューの状態変移にメッセージキューの状態変移を示します。
図2.6 メッセージキューの状態変移
メッセージキューがまだ作成されていない状態、またはメッセージキューを削除した状態です。
プログラムインタフェースまたはコマンドによりメッセージキューを作成した状態、またはアクセス禁止を解除した状態です。この状態でメッセージキューに接続してメッセージを送受信することが可能です。
プログラムインタフェースまたはコマンドによりメッセージキューへのアクセスを禁止した状態です。禁止状態には以下のものがあります。
送信禁止
受信禁止
送受信禁止
なお、以下の場合には、メッセージキューが一時的に“使用禁止状態”となり、アクセスが禁止されます。
メッセージの一括削除中
メッセージキューの強制削除中