Java Message Service 【JMS】 Jakarta Message Service
概要
Java Message Service(JMS)とは、独立に実行されているJavaプログラム間である一定のデータ集合(メッセージ)を送受信するための標準インターフェース(API)。ミドルウェアを介して統一された手順で同期あるいは非同期にメッセージをやり取りすることができる。あるプログラムから別のプログラムを指定して一対一にメッセージを送信する「Point-to-Point」(ポイント・トゥ・ポイント)モデルと、複数の相手に一対多で同じ内容を送信する「Publish-Subscribe」(Pub-Sub/パブリッシュ・サブスクライブ)モデルのいずれかを選択できる。送信側と受信側の間にはデータの受け渡しを仲介する保管場所が用意され、前者ではこれを「キュー」(queue)、後者では「トピック」(topic)という。
メッセージは通信プロトコルのパケットやデータグラムに似た構造をしており、基本的な制御情報を記したヘッダ、付加的な情報やアプリケーション固有の情報を記したプロパティ、伝送したいデータ本体であるペイロード(ボディ/本文)がこの順に格納されている。
ペイロードには単純なテキスト(文字列)やバイト列の他に、マップ(Map)、ストリーム(Stream)、シリアライズされたオブジェクトなど、複数のデータを組み合わせた複合的なデータ構造を指定することができる。
JMSのAPIでは、キューやトピックを管理する「メッセージ指向ミドルウェア」(MOM:Message Oriented Middleware)あるいは「メッセージブローカー」と、実際にデータを送受信する主体である各Javaプログラムの間の接続・通信仕様を規定している。
著名なブローカーとしては「Apache ActiveMQ」や「JBoss Messaging」、「IBM WebSphere MQ」などがあり、オープンソース、商用ソフトウェア製品共に様々な種類がある。JMSの規約に従ってコードを記述することで同じように利用することができる。
(2018.10.13更新)