そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

非同期メッセージングのメリット

Enterprise Integration Patternsでは企業内のアプリケーション間連携を4つに分類しています。

  1. ファイル伝送
  2. 共有データベース
  3. リモートコール
  4. メッセージング

まず、この4つは用途が違うので、あるアプリケーションではファイル伝送しか使っていないかもしれませんが、全社的には複数の方式から構成されます。情報システムによっては、3つ、もしくは2つの方式で構成されているかも知れません。


大容量のデータをやりとりできたり、処理の結果をすぐに知ることができたり、それぞれの方式に良い面と、不向きな面があります。
非同期メッセージングのメリットは「小メッセージ」「随時」連携する。そのとき、連携先のアプリケーションの起動状態に依存しない。つまり、運用時間の違いや、対障害性の違いなどの「連携先のサービスレベルに依存しない」、だと思います。


ただ、非同期メッセージングのメリットを最大限使っている情報システムというのは比較的少ない気がします。
例えば、業務要件的な問題。社内にメッセージング基盤が入っていたとしても、送信側、受信側共に18時になったら、送って19時になったら取り込むというような時間駆動になっているケースがあります。
これが悪いというわけではありません。締めに間に合えば良い業務では、随時に処理できる必要がないのですから、それをシステムにインプリするのは無駄です。

他には大容量データを伝送する必要があるので、メッセージング基盤の制約にひっかかる。



逆に向いているのは、社内や社外の関係者からのリクエストを随時処理するような場合。例えば、注文や、ユーザ登録、○○依頼など、次の日までは待てないようなものです。
このような業務をメッセージングでMessage Driven Bean(MDB)等を採用することは、ファイル伝送で受信側で1分間おきにポーリングするような方式と比較して、非常にシンプルに実現できますし、排他制御や、順序制御のような高度な処理もある程度、基盤側でまかなうことができます


EclipseにMessage-Driven Beanの新規作成ウィザードもあり、アノテーションなんかもさくっと付けてくれるので、結構簡単に実装もできますし。