IBM MQ
IBM MQ(アイビーエム エムキュー)はIBMが開発・販売するメッセージングミドルウェアである。旧称はMQSeries、WebSphere MQなど。メッセージキュー方式の信頼性が高く非同期通信も可能なマルチプラットフォーム対応のメッセージ通信を提供する。システム連携などで使用される。
IBM MQ は各種プラットフォームでの時間を保証したメッセージ配信を行う。メッセージ交換の信頼性と堅牢性を強化し、メッセージを失わないことを保証する。
MQ は時間に依存しないアーキテクチャを構成する機構も提供する。メッセージをあるアプリケーションから別のアプリケーションに送信するとき、相手のアプリケーションがその時点で動作していなくてもよい。受信側アプリケーションが動作していないときにメッセージが送られた場合、キューマネージャが受信側が問い合わせてくるまでそれを保持しておく。メッセージの順序性はFIFO順で保持される。これは IBM MQ のキューマネージャに限った機能ではない。
通信相手のアーキテクチャの違いを IBM MQ で変換することによって対応することができる。例えば、ビッグエンディアンからリトルエンディアンへの変換やEBCDICからASCIIへの変換である。これは、"Exits" と呼ばれるアプリケーションコードで実行される。Exits はキューマネージャ上で動作し、必要に応じてデータ変換を行う。
IBM MQ は他のアプリケーションを起動するためのメッセージを受け付けて起動を実施できる。これによりメッセージ駆動型アーキテクチャを実現できる。
メッセージのキューイングは2つの部分からなる。
メッセージとは、バイナリまたはASCIIのデータの集合体であり、関係するプログラムにとって意味のある内容である。通信プロトコルとしては、ルーティングなどの情報が転送前にメッセージに付与され、受信先アプリケーションに到達する前にそれら情報が捨てられ、メッセージだけが届けられる。
メッセージキューとは、アプリケーション内でメッセージを格納するオブジェクトである。
「キューマネージャ」は MOM に必ずあるわけではないが、IBM MQ では必要不可欠であり、メッセージキューの論理的コンテナを提供するシステムサービスであると共に、「メッセージチャンネル」を経由してメッセージを他のキューに転送する役割を持つ。
この技術の利点は以下の通り。
メッセージはTCP/IPのような純粋なパケット通信による転送に依存しない。このため、送受信を行うアプリケーション同士の結合度が弱く、非同期な運用も可能である。
メッセージは一度しか送られない。ネットワーク上の問題は全てキューマネージャが対応する。