メッセージ コンポーネント

メッセージは次の部分に分けられます。

メッセージ ヘッダ フィールド

JRun では、JMS メッセージ ヘッダ フィールドがサポートされていて、これらのフィールドは JMS メッセージ受信者に送信されます。JRun でサポートされている JMS メッセージ ヘッダ フィールドの概要は、次の表のとおりです。
フィールド
内容
設定者
JMSDestination
 
メッセージの送信先を表す Destination オブジェクトが含まれています。
JRun
JMSDeliveryMode
 
配信モードが含まれています。有効な値は
DeliveryMode.PERSISTENT
DeliveryMode.NON_PERSISTENT です。
JRun
JMSMessageID
 
固有のメッセージ ID が含まれています。
JRun
JMSTimestamp
 
メッセージが JRun に送信された時刻が含まれています。
JRun
JMSCorrelationID
 
応答と、関連する要求をリンクするアプリケーション固有の文字列が含まれています。
JRun
JMSReplyTo
 
応答の送信先となる Destination オブジェクトが含まれています。応答は要求されていませんが、Destination オブジェクトがこのフィールドに含まれているのは応答が期待されていることを示しています。
JRun
JMSRedelivered
 
メッセージを再送信するかどうかを表す boolean が含まれています。コンシューマにより、
JMSRedeliveredtrue に設定されたメッセージが受信された場合、このメッセージは以前配信されたが、コンシューマが受信を認めていなかったと考えられます。
クライアント
JMSType
 
メッセージ タイプを表す String が含まれています。
クライアント
JMSExpiration
 
メッセージの有効期限を指定する long が含まれています。JRun では、クライアントにより指定された Time‐to‐Live の値に送信時間の GMT を加えてこの時刻を設定します。
JRun
JMSPriority
 
メッセージの優先順位が含まれます。優先順位は
0 (最下位) から 9 (最上位) の間で指定します。
JRun

TextInterfaceMapInterface などのコンテンツ固有のメッセージ インターフェイスにより拡張された Message インターフェイスにあるメソッドを使用して、ヘッダ フィールドにアクセスします。

メッセージ プロパティ

JRun は JMS 仕様で定義されているオプションの JMSX 接頭辞付きのメッセージ プロパティをサポートしません。しかし、Message オブジェクト メソッドを使用してプロパティを取得および設定できます。たとえば、次のコードの一部分を使用して、メッセージを送信する前にプロパティを設定できます。

...
try {
  // ユーザ ID のプロパティを設定します。thisUser String 変数を想定します。
  if(message != null) {
    message.setStringProperty("UserID", thisUser);
    message.setText(text);
    // キューに送信します。メッセージは 5 分間存続します。
    sender.send(_message, delivery, priority, 5 * 60 * 1000);
  }else {
    // 1 つのサーブレットまたは JSP ページでの使用法を想定します。
    out.println("<H1>Message was null</H1>"); 
  }
}
...

次のコードの一部分を使用して、メッセージを受信したときにプロパティを取得できます。

final TextMessage message = (TextMessage)(_receiver.receiveNoWait());
// すべてのプロパティを取得します。
Enumeration e = message.getPropertyNames();
if(!e.hasMoreElements()) {
  // 1 つのサーブレットまたは JSP ページでの使用法を想定します。
  out.println("<h1>no properties</H1>"); 
} 
while(e.hasMoreElements()) {
  String prop = (String)e.nextElement();
  out.print("<p> " + prop);
  // すべてのプロパティが Strings であると想定します。
  out.println(":" + message.getStringProperty(prop));
} 

メッセージ本文の種類

JMS 1.0.2 仕様では、メッセージ本文のフォームについて説明されています。これらのフォームは、Message を拡張したインターフェイスにより定義されます。

次の表は、EJB メッセージ本文インターフェイスの概要についてまとめたものです。
インターフェイス
説明
コメント
StreamMessage
 
Java プリミティブ値のストリームが含まれています。
このタイプは値の代入と読み込みが順次に行われます。
MapMessage
 
名前/値ペアのセットが含まれます。名前は String オブジェクト、値は Java プリミティブ タイプです。
これらには、列挙によって連続的にアクセスするか、名前によってランダムにアクセスします。
TextMessage
 
String オブジェクトを 1 つ含んでいます。
TextMessage はテキスト メッセージまたは XML 形式のデータを持つメッセージで使用します。
ObjectMessage
 
Serializable Java オブジェクトが含まれています。
いずれかの JDK 1.2 コレクション クラスを使用できます。
BytesMessage
 
未解釈のバイト ストリームが含まれています。
通常、このタイプの本文は使用しません。

JRun では、これらのインターフェイスは allaire.ejipt._jms にある類似する名前のクラスを通じて実装されます。