パッケージ jakarta.jms

Jakarta Messaging API は、Java プログラムがエンタープライズメッセージングシステムのメッセージを作成、送信、受信、読み取るための一般的な方法を提供します。

Jakarta Messaging Applications

Jakarta Messaging アプリケーションは、次の部分で構成されています。

  • Jakarta Messaging プロバイダー - フル機能のメッセージング製品に必要な他の管理および制御機能に加えて、Jakarta Messaging API を実装するメッセージングシステム
  • Jakarta Messaging クライアント - メッセージを送受信する Java 言語プログラム
  • メッセージ - アプリケーションのクライアント間で情報を通信するために使用されるオブジェクト
  • 管理対象オブジェクト - クライアントが Jakarta Messaging プロバイダーと移植可能に対話するために検索および使用するプロバイダー固有のオブジェクト
  • 非 Jakarta メッセージングクライアント -Jakarta Messaging API の代わりにメッセージシステムのネイティブクライアント API を使用するクライアント。アプリケーションが Jakarta Messaging API の可用性よりも前の場合、Jakarta Messaging クライアントと非 Jakarta メッセージングクライアントの両方が含まれる可能性があります。

管理

Jakarta Messaging プロバイダーは、基盤となるメッセージングテクノロジーの実装が大きく異なります。Jakarta Messaging プロバイダーのシステムのインストール方法と管理方法にも大きな違いがあります。

Jakarta Messaging クライアントを移植可能にするには、プロバイダーのこれらの独自の側面から分離する必要があります。これは、プロバイダーの管理者によって作成およびカスタマイズされ、後でクライアントによって使用される Jakarta Messaging 管理対象オブジェクトを定義することによって行われます。クライアントは、移植可能な Jakarta Messaging インターフェースを介して使用します。管理者は、プロバイダー固有の機能を使用して作成します。

Jakarta Messaging 管理対象オブジェクトには次の 2 つの型があります。

  • ConnectionFactory - クライアントが Jakarta Messaging プロバイダーとの接続を作成するために使用するオブジェクト
  • Destination - クライアントが送信するメッセージの宛先と受信するメッセージのソースを指定するために使用するオブジェクト

管理対象オブジェクトは、管理者によって JNDI(Java Naming and Directory Interface)名前空間に配置されます。Jakarta Messaging クライアントは通常、ドキュメントに、必要な Jakarta Messaging 管理対象オブジェクトと、これらのオブジェクトの JNDI 名をどのように提供するかを記載しています。

2 つのメッセージングスタイル

Jakarta Messaging は、次の 2 つのメッセージングスタイルをサポートしています。

  • キューを使用したポイントツーポイント(PTP)メッセージング
  • トピックを使用したパブリッシュアンドサブスクライブ(pub/ サブ)メッセージング

これらの 2 つのスタイルは、現在使用されているメッセージングへの 2 つの主要なアプローチを表しています。

Jakarta Messaging API

歴史的な理由から、Jakarta Messaging は、メッセージを送受信するための 4 つの代替インターフェースセットを提供します。

  • Java Message Service 1.0 は、2 つのドメイン固有 API を定義しました。1 つはポイントツーポイントメッセージング(キュー)用で、もう 1 つは pub/sub(トピック)用です。これらは下位互換性の理由から Jakarta Messaging の一部のままですが、後の API によって完全に置き換えられると見なす必要があります。
  • Java メッセージサービス 1.1 は、ポイントツーポイントメッセージングと pub/ サブメッセージングの両方に使用できる単一のインターフェースセットを提供する新しい統合 API を導入しました。これは、ここではクラシック API と呼ばれます。
  • Jakarta Messaging 2.0 は、従来の API のすべての機能を提供するが、必要なインターフェースが少なく、使用が簡単な簡略化された API を導入しています。

各 API は、Jakarta Messaging プロバイダーに接続し、メッセージを送受信するための異なるインターフェースのセットを提供します。ただし、これらはすべて、メッセージとメッセージの宛先を表し、さまざまなユーティリティ機能を提供するための共通のインターフェースセットを共有しています。

すべてのインターフェースは jakarta.jms パッケージに含まれています。

Interfaces common to multiple API

複数の API に共通する主なインターフェースは次のとおりです。

  • MessageBytesMessageMapMessageObjectMessageStreamMessageTextMessage - Jakarta Messaging プロバイダーとの間で送受信されるメッセージ。
  • Queue - ポイントツーポイントメッセージングのメッセージ宛先の ID をカプセル化する管理対象オブジェクト
  • Topic - pub/ サブメッセージングのメッセージ宛先の ID をカプセル化する管理対象オブジェクト。
  • Destination - Queue と Topic の一般的なスーパー型

Classic API interfaces

従来の API によって提供される主なインターフェースは次のとおりです。
  • ConnectionFactory - クライアントが Connection を作成するために使用する管理対象オブジェクト。このインターフェースは、簡略化された API でも使用されます。
  • Connection - Jakarta Messaging プロバイダーへのアクティブな接続
  • Session - メッセージを送受信するためのシングルスレッドコンテキスト
  • MessageProducer - キューまたはトピックにメッセージを送信するために使用されるセッションによって作成されたオブジェクト
  • MessageConsumer - キューまたはトピックに送信されたメッセージの受信に使用されるセッションによって作成されたオブジェクト

Simplified API interfaces

簡略化された API は、従来の API と同じメッセージング機能を提供しますが、必要なインターフェースが少なく、使用が簡単です。簡略化された API によって提供される主なインターフェースは次のとおりです。
  • ConnectionFactory - クライアントが JMSContext を作成するために使用する管理対象オブジェクト。このインターフェースは、従来の API でも使用されます。
  • JMSContext - Jakarta Messaging プロバイダーへのアクティブな接続と、メッセージを送受信するためのシングルスレッドコンテキスト
  • JMSProducer - キューまたはトピックにメッセージを送信するために使用される JMSContext によって作成されたオブジェクト
  • JMSConsumer - キューまたはトピックに送信されたメッセージを受信するために使用される JMSContext によって作成されたオブジェクト

Legacy domain-specific API interfaces

ドメイン固有の API は、下位互換性の理由から Jakarta Messaging の一部のままですが、従来の単純化された API に完全に取って代わられると見なす必要があります。

ポイントツーポイントメッセージング用のドメイン固有 API によって提供される主なインターフェースは次のとおりです。

  • QueueConnectionFactory - クライアントが QueueConnection を作成するために使用する管理対象オブジェクト。
  • QueueConnection - Jakarta Messaging プロバイダーへのアクティブな接続
  • QueueSession - メッセージを送受信するためのシングルスレッドコンテキスト
  • QueueSender - キューにメッセージを送信するために使用される QueueSession によって作成されたオブジェクト
  • QueueReceiver - キューに送信されたメッセージの受信に使用される QueueSession によって作成されたオブジェクト
pub/ サブメッセージング用のドメイン固有 API によって提供される主なインターフェースは次のとおりです。
  • TopicConnectionFactory - クライアントが TopicConnection を作成するために使用する管理対象オブジェクト。
  • TopicConnection - Jakarta Messaging プロバイダーへのアクティブな接続
  • TopicSession - メッセージを送受信するためのシングルスレッドコンテキスト
  • TopicPublisher - トピックにメッセージを送信するために使用される TopicSession によって作成されたオブジェクト
  • TopicSubscriber - トピックに送信されたメッセージの受信に使用される TopicSession によって作成されたオブジェクト

メッセージを送受信するための用語

このドキュメントでは、「消費」という用語は、Jakarta Messaging クライアントによるメッセージの受信を意味するために使用されます。つまり、Jakarta Messaging プロバイダーがメッセージを受信し、それをクライアントに渡しました。Jakarta Messaging はメッセージの同期受信と非同期受信の両方をサポートしているため、消費という用語は、区別する必要がない場合に使用されます。

生成という用語は、メッセージを送信するための最も一般的な用語として使用されます。これは、宛先に配信するために Jakarta Messaging プロバイダーにメッセージを送信することを意味します。

Jakarta Messaging Application の開発

大まかに言えば、Jakarta Messaging アプリケーションは、メッセージを交換する 1 つ以上の Jakarta Messaging クライアントです。このアプリケーションには、JakartaMessaging 以外のクライアントも含まれる場合があります。ただし、これらのクライアントは、Jakarta Messaging API の代わりに Jakarta Messaging プロバイダーのネイティブ API を使用します。

Jakarta Messaging アプリケーションは、ユニットとして設計およびデプロイできます。多くの場合、Jakarta Messaging クライアントは既存のアプリケーションに段階的に追加されます。

アプリケーションによって使用されるメッセージ定義は、JMS で作成されている場合もあれば、アプリケーションの非 Jakarta メッセージング部分によって定義されている場合もあります。

Jakarta Messaging Client の開発

従来の API を使用する一般的な Jakarta Messaging クライアントは、次の Jakarta Messaging セットアップ手順を実行します。

  • JNDI を使用して ConnectionFactory オブジェクトを検索します
  • JNDI を使用して、1 つ以上の Destination オブジェクトを検索します
  • ConnectionFactory を使用して、メッセージ配信が禁止された Jakarta Messaging Connection オブジェクトを作成します
  • 接続を使用して、1 つ以上の Jakarta Messaging Session オブジェクトを作成します
  • セッションと宛先を使用して、必要な MessageProducer オブジェクトと MessageConsumer オブジェクトを作成します
  • メッセージの配信を開始するように Connection に指示します

対照的に、簡略化された API を使用する一般的な Jakarta Messaging クライアントは、次のことを行います。

  • JNDI を使用して ConnectionFactory オブジェクトを検索します
  • JNDI を使用して、1 つ以上の Destination オブジェクトを検索します
  • ConnectionFactory を使用して JMSContext オブジェクトを作成します
  • JMSContext を使用して、必要な JMSProducer および JMSConsumer オブジェクトを作成します。
  • メッセージの配信が自動的に開始されます

この時点で、クライアントはメッセージを生成および消費するために必要な基本的な Jakarta Messaging セットアップを持っています。

パッケージ仕様

Jakarta Messaging 3.1 仕様

関連資料

Jakarta Enterprise Edition Technical Documentation