トピック

概論To top of page

Java Messaging System (JMS) は、エンタープライズ全体でのビジネス・データとイベントの非同期通信に対するクロス・プラットフォームの標準を提供します。通信は一般に、複数のプロセスとコンピューターにまたがっています。アプリケーション内のオブジェクトは、一般に異なるコンピューター上で稼動し、JMS で定義されたインターフェースの標準セットを介してメッセージ指向ミドルウェア (MOM) のサービスへのアクセスによって通信します。

本文の説明に関連する図

JMS は、Java プログラマー (メッセージ・プロジューサーとコンシューマーを実装する) を MOM プロバイダーから分離させるインターフェースのセットを提供します。

このページでは、JMS の主な概念と一般的な使用について説明します。

メッセージ To top of page

メッセージは、ビジネス・データの独立したパッケージです。次の 3 つの部分があります。

  • ヘッダー: ネットワークのルーティング情報とメッセージ識別子を含みます。
  • プロパティー: メッセージのメタデータを含みます。JMS はプロパティーのいくつかを設定しますが、アプリケーション・プログラマーも独自にプロパティーを追加できます。
  • ペイロード: 実際のビジネス・データを含みます。ペイロードは、アプリケーション・プログラマーが完全に制御します。

本文の説明に関連する図

JMS では、メッセージはインターフェース javax.jms.Message を実装するオブジェクトでカプセル化されます。Java プログラムは、次の図で示すように、このインターフェースを介して各部分にアクセスできます。ペイロードにはいくつかのバリエーションがありますが、それについては後で説明します。

本文の説明に関連する図

ヘッダーは、常に存在する必要があるメッセージのプロパティーを含みます。ヘッダーからは、次のプロパティーが使用可能です。

  • MessageID
  • Timestamp
  • CorrelationID
  • ReplyTo
  • Destination
  • DeliveryMode
  • Redelivered
  • Type
  • Expiration
  • Priority

プロパティーは、アプリケーション・プログラマーによってメッセージのメタデータを提供するために使用できます。プロパティーは、名前と値の組み合わせの任意のセットから構成されます。

JMS でサポートされるペイロードには 6 種類あります。

  • Text メッセージ
  • Object メッセージ
  • Byte メッセージ
  • Map メッセージ
  • Stream メッセージ
  • Message (body は存在しない)

ペイロードの型はクラス階層に反映され、そこでインターフェースが javax.jms.Message を拡張します。次のクラス図では、頻繁に使用されるテキスト、オブジェクト、バイトのメッセージを示します。通常、テキスト・メッセージは XML データを伝達します。

本文の説明に関連する図

宛先 To top of page

JMS は、宛先の概念を定義します。メッセージは、宛先との間で送受信されます。宛先には、次の 2 つの形式があります。

  • キュー
  • トピック

キューは、メッセージが 1 つの受信側のみで処理される場合に使用されるメッセージ宛先です。メッセージを郵便の送信にたとえると、キューは特定の受信者の郵便受けです。キューを使用した通信をポイント・ツー・ポイント通信と呼びます。

トピックは、複数の受信側がメッセージを受信する必要がある場合に使用されるメッセージ宛先であり、それぞれの受信側は特定の種類のメッセージを受信する必要があります。これは、上記のたとえでいう郵便ではなく、新聞に記事を書くことと同じだといえます。つまり、1 つのメッセージは複数の受信側によって参照されます。この種の設計をパブリッシュ・サブスクライブ・モデルと呼びます。

メッセージ配信 To top of page

メッセージの配信は、次の 2 つの方法で実行されます。

  • 永続的
  • 非永続的

永続的な配信は、ファイルやデータベースへのメッセージの保管を含み、これによって配信が保証されます。非永続的な配信は、パフォーマンスを向上させ、保管のオーバーヘッドを削減しますが、メッセージが配信される保証はありません。JMS を使用する多くのアプリケーションでは、永続的な配信が一般に選択されています。

JMS クライアント To top of page

JMS クライアントは、JMS を使用する Java オブジェクトです。次の 2 つのロールが定義されています。

  • メッセージ・プロジューサー: メッセージを作成し、送信する Java プログラム。
  • メッセージ・コンシューマー: メッセージを受信する Java プログラム。

次の図は、プロジューサー、コンシューマー、JMS プロバイダーのやりとりの概要を示します。

本文の説明に関連する図

メッセージ・プロジューサーは、JMS 実装にアクセスする任意の Java クラスです。メッセージ・プロジューサーは、メッセージを作成し、送信します。

メッセージ・コンシューマーは、JMS 実装にアクセスする任意の Java クラスです。メッセージ・コンシューマーは、メッセージを受信し、処理します。

JMS クライアントは、JMS にアクセスするインターフェースのセットを使用します。JMS インターフェースを実装するオブジェクトは、ファクトリーのセットを介して作成されます。初期ファクトリーは、ConnectionFactory です。コネクション・ファクトリーは、JNDI を介してルックアップされます。JMS クライアントは、コネクション・ファクトリーを使用して、コネクション・オブジェクトを作成します。コネクション・オブジェクトは、ほかの JMS オブジェクトのファクトリーとして使用されるセッション・オブジェクトの作成に使用されます。次の図は、キューとトピックの詳細からの抽象化によって、ファクトリー間の概念上の主な関係を示します。

本文の説明に関連する図

コネクション・ファクトリー、コネクション、セッションは次の 2 つの形式になります。キュー用とトピック用です。次のクラス図は、主な JMS 概念のインターフェース階層を示します。

本文の説明に関連する図

JMS プロバイダー To top of page

JMS プロバイダーは、JMS 仕様を満たす実装です。JMS プロバイダーは、メッセージの受信、永続化、配信を担当します。

詳細情報To top of page

JMS について詳しくは、http://java.sun.com/products/jms/ を参照してください。




この内容は、Inferdata Corporation によって作成または部分的に作成されました。

Rational Unified Process   2003.06.15