WebSphere MQ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
WebSphere MQ
開発元 IBM
最新版 V7.5 / 2012年6月16日
対応OS クロスプラットフォーム
種別 メッセージングミドルウェア
ライセンス プロプライエタリ (IPLA)
公式サイト WebSphere MQ
テンプレートを表示

WebSphere MQ は、IBMが開発・販売する、メッセージングミドルウェアである。

メッセージキュー方式の、信頼性が高い、非同期通信も可能な、マルチプラットフォーム対応のメッセージ通信を提供する。このためシステム連携のためのメッセージング・ミドルウェアとして使用される場合が多い。

バージョン7.0は、Microsoft WindowsLinuxUNIX(AIXHP-UXSolaris)、i5/OSミッドレンジコンピュータ)、z/OSメインフレーム)で動作する。

名称[編集]

当初の名称は「MQSeries」(えむきゅーしりーず) であったが、2002年に WebSphereブランドに組み込まれ「WebSphere MQ」となった。「WMQ」または「MQ」と略される場合が多いが、「MQ」の場合はメッセージキューイング全般の略称との混同に注意が必要である。

歴史[編集]

  • MQSeriesリリース前
    • 1964年 System/360がリリースされたとき、BTAM と QTAM(Basic and Queued Telecommunication Access Methods)が通信手法として提供された。
    • 1971年 TSO(Time-Sharing Option)と共に TCAM(Telecommunication Access Method)が登場。
    • 1971年12月 CICSとTCAMの連携が発表され、1972年12月にリリース。
  • MQSeries時代
    • 1993年 MQSeries V1(メッセージ・キューイング。TCAM の機能を IBM 以外のプラットフォームでも使えるよう拡張した)
    • 1995年 MQSeries V2(分散系プラットフォームへの拡張、トリガリング、コード変換、プライオリティ、Non-Persistentメッセージ)
    • 1997年 MQSeries V5.0(メッセージサイズ拡張、C++Javaのサポート )
    • 1999年 MQSeries V5.1(クラスタリング(MQクラスター)、GUI管理ツール(MQエクスプローラ) )
    • 2001年 MQSeries V5.2(パフォーマンス改善、Linuxのサポート)
  • WebSphere MQ時代
    • 2002年 WebSphere MQ V5.3(MQSeries から名称変更、SSLサポート)
    • 2004年 王立工学アカデミー[1]から MacRobert 賞[2]を授与された[3]
    • 2005年 WebSphere MQ V6(64bit対応、Eclipseベースのユーザーインターフェース)
    • 2008年4月 WebSphere MQ V7.0(パブリッシュ/サブスクライブ・メッセージングおよびJMSの拡張)
    • 2009年8月 WebSphere MQ V7.0.1(マルチ・インスタンス・キュー・マネージャー、自動クライアント再接続、構成変更の可視性、監査能力の向上)

機能[編集]

WebSphere MQ は各種プラットフォームでの時間を保証したメッセージ配信を行う。メッセージ交換の信頼性と堅牢性を強化し、メッセージを失わないことを保証する。

MQ は時間に依存しないアーキテクチャを構成する機構も提供する。メッセージをあるアプリケーションから別のアプリケーションに送信するとき、相手のアプリケーションがその時点で動作していなくてもよい。受信側アプリケーションが動作していないときにメッセージが送られた場合、キューマネージャが受信側が問い合わせてくるまでそれを保持しておく。メッセージの順序性はFIFO順で保持される。これは WebSphere MQ のキューマネージャに限った機能ではない。

通信相手のアーキテクチャの違いを WebSphere MQ で変換することによって対応することができる。例えば、ビッグエンディアンからリトルエンディアンへの変換やEBCDICからASCIIへの変換である。これは、"Exits" と呼ばれるアプリケーションコードで実行される。Exits はキューマネージャ上で動作し、必要に応じてデータ変換を行う。

WebSphere MQ は他のアプリケーションを起動するためのメッセージを受け付けて起動を実施できる。これによりメッセージ駆動型アーキテクチャを実現できる。

通信[編集]

WebSphere MQ の中核となるのは「キューマネージャ」(MQ ManagerMQM)である。キューマネージャは記憶装置を操作し、タイミング問題を扱い、アプリケーション起動を行い、その他のデータの転送には直接関係しない機能を持っている。

キューマネージャは、同じホスト上で動作するソフトウェアとは Bindings と呼ばれるコネクションを持ち、ネットワーク経由では他のホスト上のソフトウェアとの間で Client と呼ばれるコネクションを持つ。同じホスト上のソフトウェアと Client コネクションで繋げることもできる。Bindings の方が高速だが Client の方が堅牢であり、アプリケーションの設計を容易に変更可能である。

キューマネージャ間の通信は Channel と呼ばれる別のプログラムが担当する。Channel はキューマネージャと同じホスト上で動作し、ネットワーク経由のデータ送受信を受け持つ。TCP/IP のネットワークでは、Channel は特定のポートでデータの送受信を行う。

Client コネクションでアプリケーションとキューマネージャ間の通信を行うプログラムは Listener と呼ばれる。Listener はアプリケーションから見たキューマネージャのネットワークインタフェースとなっている。TCP/IP ネットワークでは、Listener は特定ポート上で "listen" する(パケット受信を待ち受けること)。

メッセージ指向ミドルウェア (MOM)[編集]

メッセージのキューイングは2つの部分からなる。

  • メッセージとは、バイナリまたはASCIIのデータの集合体であり、関係するプログラムにとって意味のある内容である。通信プロトコルとしては、ルーティングなどの情報が転送前にメッセージに付与され、受信先アプリケーションに到達する前にそれら情報が捨てられ、メッセージだけが届けられる。
  • メッセージキューとは、アプリケーション内でメッセージを格納するオブジェクトである。

「キューマネージャ」は MOM に必ずあるわけではないが、WebSphere MQ では必要不可欠であり、メッセージキューの論理的コンテナを提供するシステムサービスであると共に、「メッセージチャンネル」を経由してメッセージを他のキューに転送する役割を持つ。

この技術の利点は以下の通り。

  • メッセージはTCP/IPのような純粋なパケット通信による転送に依存しない。このため、送受信を行うアプリケーション同士の結合度が弱く、非同期な運用も可能である。
  • メッセージは一度しか送られない。ネットワーク上の問題は全てキューマネージャが対応する。

API[編集]

WebSphere MQ の機能を利用する方法はいくつもある。IBM がサポートする API として以下のものがある。

  • IBM Message Queue Interface (MQI) : C言語COBOLPL/IJava
  • Java 向けには J2EE で標準化された JMS もある。
  • C/C++ と .NET 向けの XMS[4]

IBMがサポートする以外にも各種APIが存在する。例えば、モルガン・スタンレーが開発したPerl用インタフェースがCPANから入手可能である。[5]

外部リンク[編集]