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