Java_Message_Serviceとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Java_Message_Serviceの意味・解説 

Java Message Service

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/20 15:31 UTC 版)

Java Message Service (JMS) とはJavaプログラムネットワークを介してデータを送受信させるためのAPIである。

Java EE 1.3 以降に標準で含まれている。データを1つずつバラバラに扱うのではなく、メッセージと呼ばれる塊にまとめて送信するメッセージングを行う。1対1のキューと1対多のトピックが使える。受信は、MessageConsumer.receive() による同期受信のほか、MessageListener を使った非同期受信もできる。

メッセージングの一般的な概念

メッセージングとは、疎結合分散通信形式のひとつの形式である。この文脈上での"通信"とはソフトウェアコンポーネント間のメッセージ交換である。

メッセージ指向技術は、キューのような仲介役のコンポーネントの導入によって密結合通信(TCPネットワークソケット、CORBA、RMIのような)を緩和する。このアプローチによって、ソフトウェアコンポーネントがお互いに"間接的に"通信するようになる。このメリットは、キューを使用して通信する場合に、メッセージ送信者が正確に受信者を知る必要がないということも含んでいる。

モデル

JMS API は二つのモデルをサポートする。

ポイント・ツー・ポイント

ポイント・ツー・ポイントにおいて、送信者は特定のキューにメッセージを送信し受信者はそのキューからメッセージを読み込む。 ここで送信者は、メッセージの宛先を知っていて、受信者のキューに対して直接メッセージを送信している。これは、次のことを特色づける。

  • ただ一人だけの消費者がメッセージを取得できる。
  • 生産者は、消費者がメッセージを消費するときに、稼働していなくてもよい。また、消費者もメッセージが送信されたときに稼働していなくてもよい。

出版-購読型モデル

出版-購読型モデルでは、特定のメッセージトピックに対してメッセージを出版することができる。購読者は、受信対象のメッセージトピックに対して購読要求を行う。このモデルでは、出版者と購読者がお互いに知ることがない。比喩として掲示板が挙げられる。

このモデルの特徴を以下に挙げる。

  • 複数の購読者が、メッセージを取得できる。
  • 出版者と購読者は同時に稼働しないといけない。

出版者は、クライアントが購読可能になるためにサブスクリプションを生成しなくてはいけない。購読者は、持続的なサブスクリプションが確立されている間、継続的に受信し続ける。

コネクション確立

JMSは、アプリケーションをデータの転送レイヤから切り離す方法を提供する。 同じくJavaクラスは、プロバイダを要求するJNDIを使用することによって、異なるJMSプロバイダを通信を行うために利用することができる。 始めに、キューかトピックに接続するためにconnection factoryを使用し、そしてメッセージを送信、もしくは出版する。 受信者側では、メッセージを受信、もしくは購読する。

メッセージ

メッセージは本文・ヘッダー・プロパティの3要素からなる。

メッセージ本文には以下の5種類を利用できる。

  • テキスト
  • マップ (Map)
  • オブジェクト (Serializable)
  • ストリーム (Stream)
  • バイト配列

プロパティの値としては String もしくは各種プリミティブ型の値が利用できる。プロパティに基づいてメッセージセレクタが利用できる。メッセージセレクタの構文は SQL92 条件式構文のサブセット。LIKE 演算子や中間一致も利用可能。

ヘッダーにはいろいろな項目がある。

  • JMSReplyTo ヘッダーでは、返信して欲しいキューもしくはトピックスを指定して、メッセージを処理した後、返信メッセージを送って欲しい送り先を指定することができる。
  • JMSCorrelationID ヘッダーでどのメッセージに対する返信かというのを表現できる。
  • JMSPriority ヘッダーで配信の優先順位を指定できる。
  • JMSDeliveryMode ヘッダーで、メッセージをストレージに永続化するかどうか指定できる。

利用例

コネクション確立

コネクション確立は以下のようにして行う。最初の1行目は、Apache ActiveMQ の場合であり、実装によって異なる。

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
// ここでメッセージの受信のリスナーの登録を行う
connection.start();
// ここでメッセージの送信を行う
connection.close();

出版-購読型モデル

出版-購読型モデルは以下のようにして行う。以下、送信側の例。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic testTopic = session.createTopic("testTopic");
MessageProducer producer = session.createProducer(testTopic);
producer.send(session.createTextMessage("Hello JMS"));

以下、受信側の例。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic testTopic = session.createTopic("testTopic");
MessageConsumer consumer = session.createConsumer(testTopic);
consumer.setMessageListener(new MessageListener() {
    public void onMessage(Message message) {
        try {
            System.out.println(((TextMessage) message).getText());
        } catch (JMSException e) {
        }
    }
});

ブローカーの起動

ブローカーの起動方法は実装によってまちまちである。別プロセスとして動作させることもできるし、Java VM 内に埋め込む(共存させる)事もできる。例えば、Apache ActiveMQ の場合、new BrokerService().start(); で埋め込みブローカーが起動でき、埋め込みブローカーに対しては vm://localhost で通信できる。

実装

以下のソフトウェアで実装されている。

歴史

  • 2001年6月25日 - 1.0.2b リリース
  • 2002年3月18日 - 1.1 リリース
  • 2013年5月21日 - 2.0 リリース

関連項目

外部リンク


「Java Message Service」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Java_Message_Service」の関連用語

Java_Message_Serviceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Java_Message_Serviceのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのJava Message Service (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS