JMS は、1 つの基本メッセージ・タイプと 5 つのサブタイプの、 6 つのメッセージ・インターフェース・タイプを定義しています。 メッセージ・タイプは、ペイロードのメッセージ・タイプに応じて定義されます。 ペイロードは、内容を保持するメッセージ本体です。
JMS は、インターフェースだけを指定して、インプリメンテーションは指定しません。 このアプローチにより、共通インターフェースを使用しながら、ベンダー固有の方法でメッセージのインプリメンテーションおよび移送を行うことが可能になります。
メッセージ・タイプ | 説明 |
---|---|
Message | 基本クラス。 このメッセージ・タイプはイベント通知に使用され、ペイロードはありません。 |
BytesMessage | ペイロードは、バイトの配列として保管されます。 アプリケーションにとってネイティブな形式でデータを交換するとき、 および JMS が 2 つのシステム間でのトランスポートとして使用されるときには、JMS クライアントはメッセージ・ペイロード・タイプを知らないので、このメッセージ・タイプが便利です。 このメッセージ・タイプを使用して XML メッセージを送信すれば、メッセージは不必要なデータ変換の対象にならないので、メッセージを効率的に送信できます。 |
TextMessage | データはストリングとして保管されます。 このメッセージ・タイプは、簡単なテキスト・メッセージを交換するときに便利です。 |
StreamMessage | ストリーム・メッセージは、プリミティブ Java™ タイプのシーケンスです。 メッセージ・オブジェクトは、ストリーム内のこれらのプリミティブについて、その順序およびタイプを追跡します。 公式変換規則が適用されます。
例えば、JMS アプリケーションが double 値を short 値として読み取ろうとすると、例外がスローされます。 変換規則の完全なリストについては、Java Message Service Specification、バージョン 1.1 を参照してください。 21ABCDEFGH32.345 は、StreamMessage ペイロードの例です。 これは、以下の 3 つのフィールドから構成されています。
データ構造が不明の場合、一般的なメソッドの readObject() を使用して、ストリーム内の次のオブジェクトを戻すことができます。 データの構造が既知の場合、JMS クライアントはアクセスするオブジェクトのタイプに関して 具体的であることができます。 |
MapMessage | MapMessage のペイロードは、名前と値の対のセットとして保管されます。 名前はストリングとして定義され、値は入力されます。 MapMessage は、メッセージごとに変わることのあるキー付きデータの配信に便利です。 NumberOfCopies:5 は、MapMessage ペイロードの例です。 NumberOfCopies はキーで、5 は値です。 データには、getMapNames() を使用してアクセスできます。 これは Java 列挙型オブジェクトを戻します。 hasMoreElements() を使用して、マップされた名前と値の対を MapMessage 内で繰り返し取得することが可能です。 |
ObjectMessage | オブジェクト・メッセージは、シリアライズ可能な Java オブジェクトをペイロードとして搬送します。 これは、Java オブジェクトの交換に便利です。 |