メッセージ・キューイングの主な機能とメリット

ここでは、メッセージ・キューイングの主な機能とメリットを中心に説明します。 メッセージ・キューイングのセキュリティーやデータ保全性などについて説明します。

メッセージ・キューイング方法を用いるアプリケーションの主な機能は、次のとおりです。
  • プログラム間に直接接続がない。
  • プログラム間の通信は時間に依存しないようにできる。
  • 作業は小規模な、自己完結型のプログラムによって行える。
  • 通信をイベント主導にすることができる。
  • アプリケーションがメッセージに優先順位を割り当てることができる。
  • セキュリティー。
  • データ保全性。
  • リカバリー・サポート。
プログラム間に直接の接続がない
メッセージ・キューイングは、間接的なプログラム間通信の技法です。 これは、プログラムが相互に通信し合うアプリケーション内で用いることができます。 1 つのプログラムがメッセージを (キュー・マネージャーが所有する) キューに書き込んで、次に別のプログラムがそのメッセージをキューから読み取ることによって通信が行われます。

プログラムは、他のプログラムによってキューに書き込まれたメッセージを読み取ることができます。 他のプログラムは、受信プログラムとして同じキュー・マネージャーに接続することも、または別のキュー・マネージャーに接続することもできます。 この別のキュー・マネージャーは別のシステム、異なったコンピューター・システム、またはたとえ異なった企業にあっても構いません。

メッセージ・キューを用いて通信するプログラム間には、物理的な接続はありません。 プログラムは、キュー・マネージャーが所有するキューにメッセージを送信し、別のプログラムがそのキューからメッセージを取得します ( 図 1 を参照)。
図1: 従来の通信方式と比較したメッセージ・キューイング

従来の通信アプリケーションの構造と、メッセージ・キューイングを介して通信するアプリケーションの構造を対比する 2 つの図。

電子メールの場合と同様に、トランザクションの一部である個々のメッセージは、ストア・アンド・フォワード・ベースでネットワーク内を移動します。 ノード間のリンクに障害が起こった場合は、そのリンクが復旧するか、オペレーターまたはプログラムがそのメッセージの宛先を変更するまで、メッセージは保留されます。

メッセージがキューからキューへ移動する機構はプログラムには表れません。 そのため、プログラムはより単純化されます。

時間に依存しない通信
他のプログラムに作業を要求したプログラムは、要求に対する応答を待つ必要はありません。 これらのプログラムは他の作業を行うことができ、応答の処理をそれが到着したとき、または後で行うことができます。 メッセージング・アプリケーションを作成するときは、プログラムがいつメッセージを送信するか、または相手がいつメッセージを受信できるかを知る (あるいは関与する) 必要はありません。 メッセージが失われることはありません。メッセージは、相手がそれを処理できるようになるまで、キュー・マネージャーによって保存されます。 メッセージは、プログラムが削除するまでキューにとどまっています。 これは、送信と受信のアプリケーション・プログラムは分離されていることを意味します。送信側は、メッセージの受信に関する受信側の応答を待たずに処理を継続できます。 ターゲット・アプリケーションが、メッセージの送信時に、実行中である必要もありません。 ターゲット・アプリケーションは、始動後にメッセージを取り出すことができます。
小規模のプログラム
メッセージ・キューイングには、小規模の自己完結型のプログラムを使用できるという利点があります。 単一の大規模なプログラムに作業のすべての部分を順次に実行させる代わりに、その作業をいくつかの小規模で独立したプログラムに分散させることができます。 要求側プログラムは、個別の各プログラムにメッセージを送信して、それぞれの機能を実行するよう要求します。各プログラムは、機能を完了すると、1 つまたは複数のメッセージとしてその結果を戻します。
メッセージ・ドリブン型の処理
トリガー操作 と呼ばれるメカニズムを使用して、メッセージがキューに到着したときに自動的にアプリケーションを開始できます。 必要に応じて、メッセージの処理が完了したときに、アプリケーションを停止させることもできます。
イベント主導型の処理
プログラムを、キューの状態に応じて制御できます。 例えば、メッセージがキューに到着した直後にプログラムを開始するようにしたり、またはある優先順位より上あるいはあらゆる優先順位のメッセージが、例えば 10 個キューに入るまではプログラムを開始しないようにすることもできます。
メッセージ優先順位
プログラムは、メッセージをキューに書き込むときに優先順位を割り当てることができます。 これにより、新しいメッセージが追加されるキュー内の位置が決まります。

プログラムがキューからメッセージを取得する方法は、キューに入っているメッセージの順番に取得するか、特定のメッセージを取得するかのいずれかです。 (プログラムが以前に送信した要求に対する応答を探している場合は、特定のメッセージを取得する必要が生じることがあります。)

セキュリティー
キュー・マネージャーを使用する際のアプリケーションの認証、キュー・マネージャー上のキューなどのリソースを使用する際の許可検査、ネットワークを介して転送されるメッセージ・データおよびキュー上に存在するメッセージ・データの暗号化、といったセキュリティー機能が用意されています。 セキュリティーについて詳しくは、 セキュリティーの概要を参照してください。
データ整合性
データ保全性は、作業単位によって提供されます。 各 MQGET や MQPUT では、作業単位の開始と終了の同期は、オプションとして完全にサポートされており、作業単位の結果をコミットしたり、ロールバックしたりすることができます。 同期点サポートは、アプリケーション用に選択された同期点調整の形式に応じて、 IBM® MQ の内部または外部のいずれかで動作します。
リカバリー・サポート
リカバリーを可能にするために、すべての永続 IBM MQ 更新がログに記録されます。 リカバリーが必要な場合、すべてのパーシスタント・メッセージがリストアされ、すべての未完了トランザクションがロールバックされ、すべての同期点コミットおよびバックアウトは制御中の同期点マネージャーが通常ハンドルする方法で処理されます。 持続メッセージについて詳しくは、 メッセージ持続性を参照してください。
注: IBM MQ クライアントおよびサーバーを検討する場合、新しいプラットフォームで追加の IBM MQ MQI clients をサポートするようにサーバー・アプリケーションを変更する必要はありません。 同様に、 IBM MQ MQI client は、変更せずに、追加のタイプのサーバーで機能することができます。