public interface Message
Message
インターフェースは、すべての Jakarta Messaging メッセージのルートインターフェースです。すべてのメッセージに使用されるメッセージヘッダーと acknowledge
メソッドを定義します。ほとんどのメッセージ指向ミドルウェア(MOM)製品は、メッセージをヘッダーと本文で構成される軽量エンティティとして扱います。ヘッダーには、メッセージのルーティングと識別に使用されるフィールドが含まれています。本文には、送信されるアプリケーションデータが含まれます。
この一般的な形式では、メッセージの定義は製品によって大きく異なります。Jakarta Messaging API がこれらすべてのメッセージモデルをサポートするのは非常に困難です。
これを念頭に置いて、Jakarta Messaging メッセージモデルには次のゴールがあります。
Jakarta Messaging メッセージは、次の部分で構成されています。
Jakarta Messaging API は 5 種類のメッセージ本文を定義します。
StreamMessage
オブジェクトのメッセージ本文には、Java プログラミング言語のプリミティブ値のストリーム(「Java プリミティブ」)が含まれています。順番に入力され、読み込まれます。MapMessage
オブジェクトのメッセージ本文には、名前と値のペアのセットが含まれます。ここで、名前は String
オブジェクトであり、値は Java プリミティブです。エントリには、名前で順次またはランダムにアクセスできます。エントリの順序は定義されていません。TextMessage
オブジェクトのメッセージ本文には java.lang.String
オブジェクトが含まれます。このメッセージ型は、プレーンテキストメッセージおよび XML メッセージの転送に使用できます。ObjectMessage
オブジェクトのメッセージ本文には、Serializable
Java オブジェクトが含まれています。BytesMessage
オブジェクトのメッセージ本文には、解釈されないバイトのストリームが含まれます。このメッセージ型は、既存のメッセージフォーマットと一致するように本文を文字通りにエンコードするためのものです。多くの場合、より使いやすい他のボディ型の 1 つを使用することが可能です。Jakarta Messaging API ではバイトメッセージでメッセージプロパティを使用できますが、プロパティを含めると形式に影響する可能性があるため、通常は使用されません。JMSCorrelationID
ヘッダーフィールドは、1 つのメッセージを別のメッセージにリンクするために使用されます。通常は、応答メッセージとリクエストメッセージをリンクします。
JMSCorrelationID
は、プロバイダー固有のメッセージ ID、アプリケーション固有の String
オブジェクト、またはプロバイダー固有の byte[]
値を保持できます。
Message
オブジェクトには、アプリケーション定義のプロパティ値をサポートするための組み込み機能が含まれています。実際、これはアプリケーション固有のヘッダーフィールドをメッセージに追加するメカニズムを提供します。
プロパティを使用すると、アプリケーションはメッセージセレクターを介して、アプリケーション固有の条件を使用して、Jakarta Messaging プロバイダーに代わりにメッセージを選択またはフィルタリングさせることができます。
プロパティ名は、メッセージセレクタ識別子の規則に従う必要があります。プロパティ名は null であってはならず、空の文字列であってはなりません。プロパティ名が設定されていて、それが null または空の文字列の場合、IllegalArgumentException
をスローする必要があります。
プロパティ値は boolean
、byte
、short
、int
、long
、float
、double
、String
にすることができます。
プロパティ値は、メッセージを送信する前に設定されます。クライアントがメッセージを受信すると、そのプロパティは読み取り専用モードになります。この時点でクライアントがプロパティを設定しようとすると、MessageNotWriteableException
がスローされます。clearProperties
を呼び出すと、プロパティの読み取りと書き込みの両方ができるようになります。ヘッダーフィールドはプロパティとは異なることに注意してください。ヘッダーフィールドが読み取り専用モードになることはありません。
プロパティ値は、メッセージの本文の値と重複する場合と重複しない場合があります。Jakarta Messaging ではプロパティを作成する必要があるかどうかについてポリシーを定義していませんが、アプリケーション開発者は、Jakarta Messaging プロバイダーがメッセージの本文のデータをメッセージのプロパティのデータよりも効率的に処理する可能性があることに注意する必要があります。最高のパフォーマンスを得るには、アプリケーションでメッセージのヘッダーをカスタマイズする必要がある場合にのみ、メッセージプロパティを使用する必要があります。これを行う主な理由は、カスタマイズされたメッセージ選択をサポートするためです。
メッセージプロパティは、次の変換テーブルをサポートしています。マークされたケースはサポートされている必要があります。マークされていないケースは JMSException
をスローする必要があります。プリミティブの valueOf
メソッドがプリミティブの有効な表現として String
を受け入れない場合、String
-to-primitive 変換はランタイム例外をスローする可能性があります。
行型として書き込まれた値は、列型として読み取ることができます。
| | boolean byte short int long float double String |---------------------------------------------------------- |boolean | X X |byte | X X X X X |short | X X X X |int | X X X |long | X X |float | X X X |double | X X |String | X X X X X X X X |----------------------------------------------------------
プロパティの型固有の set/get メソッドに加えて、Jakarta Messaging は setObjectProperty
メソッドと getObjectProperty
メソッドを提供します。これらは、オブジェクト化されたプリミティブ値を使用して、同じプロパティ型のセットをサポートします。それらの目的は、プロパティ型の決定が、コンパイル時ではなく実行時に行われるようにすることです。それらは同じプロパティ値の変換をサポートします。
setObjectProperty
メソッドは、クラス Boolean
、Byte
、Short
、Integer
、Long
、Float
、Double
、String
の値を受け入れます。他のクラスを使用しようとすると、JMSException
をスローする必要があります。
getObjectProperty
メソッドは、クラス Boolean
、Byte
、Short
、Integer
、Long
、Float
、Double
、String
の値のみを返します。
プロパティ値の順序は定義されていません。メッセージのプロパティ値を反復処理するには、getPropertyNames
を使用してプロパティ名の列挙を取得してから、さまざまなプロパティ get メソッドを使用してそれらの値を取得します。
メッセージのプロパティは、clearProperties
メソッドによって削除されます。これにより、メッセージに空のプロパティセットが残ります。
設定されていない名前のプロパティ値を取得すると、null 値が返されます。getStringProperty
および getObjectProperty
メソッドのみが NULL 値を返すことができます。null 値をプリミティブ型として読み取ろうとすると、プリミティブの対応する valueOf(String)
変換メソッドを null 値で呼び出すものとして扱う必要があります。
Jakarta Messaging API は、Jakarta Messaging で定義されたプロパティ用に JMSX
プロパティ名プレフィックスを予約します。これらのプロパティの完全なセットは、Jakarta Messaging 仕様で定義されています。この仕様では、各プロパティのサポートが必須かオプションかも定義されています。新しい Jakarta Messaging 定義のプロパティは、Jakarta Messaging API の新しいバージョンで追加される可能性があります。String[] ConnectionMetaData.getJMSXPropertyNames
メソッドは、接続でサポートされている JMSX プロパティの名前を返します。
JMSX プロパティは、接続でサポートされているかどうかに関係なく、メッセージセレクタで参照できます。それらがメッセージに存在しない場合、他の存在しないプロパティと同様に扱われます。受信時にプロバイダーによって設定されたプロパティにメッセージセレクターを設定した場合の影響は定義されていません。
仕様で「送信時にプロバイダーによって設定される」と定義されている JMSX プロパティは、メッセージのプロデューサーとコンシューマーの両方で使用できます。仕様で「受信時にプロバイダーによって設定される」と定義されている JMSX プロパティは、コンシューマーのみが使用できます。
JMSXGroupID
および JMSXGroupSeq
は、クライアントがメッセージをグループ化する場合に使用する必要がある標準プロパティです。すべてのプロバイダーがサポートする必要があります。特に明記されていない限り、JMSX プロパティの値とセマンティクスは定義されていません。
Jakarta Messaging API は、プロバイダー固有のプロパティ用に JMS_vendor_name
プロパティ名プレフィックスを予約します。各プロバイダーは、vendor_name
の独自の値を定義します。これは、Jakarta Messaging プロバイダーがその特別なメッセージごとのサービスを Jakarta Messaging クライアントで利用できるようにするために使用するメカニズムです。
プロバイダー固有のプロパティの目的は、Jakarta Messaging クライアントをプロバイダーネイティブクライアントと単一の Jakarta Messaging アプリケーションに統合するために必要な特別な機能を提供することです。Jakarta Messaging クライアント間のメッセージングには使用しないでください。
Jakarta Messaging API は、Jakarta Messaging メッセージモデルを定義する一連のメッセージインターフェースを提供します。これらのインターフェースの実装は提供していません。
各 Jakarta Messaging プロバイダーは、メッセージのインスタンスを作成するための Session
オブジェクトを一連のメッセージファクトリに提供します。これにより、プロバイダーは特定のニーズに合わせたメッセージ実装を使用できます。
プロバイダーは、独自のものではないメッセージの実装を受け入れる準備をする必要があります。それらは、それ自体の実装ほど効率的に処理されない場合があります。ただし、それらは処理する必要があります。
プロバイダーが外部メッセージの実装を処理している場合は、次の例外ケースに注意してください。外部メッセージ実装に、外部宛先実装に設定された JMSReplyTo
ヘッダーフィールドが含まれている場合、プロバイダーはこのヘッダーフィールドの値を処理または保持する必要はありません。
Jakarta Messaging メッセージセレクターを使用すると、クライアントは、ヘッダーフィールド参照とプロパティ参照によって、関心のあるメッセージを指定できます。ヘッダーとプロパティ値がセレクターと一致するメッセージのみが配信されます。メッセージが配信されないことの意味は、使用されている MessageConsumer
によって異なります(QueueReceiver
および TopicSubscriber
を参照)。
メッセージセレクタは、メッセージ本文の値を参照できません。
メッセージのヘッダーフィールド値とプロパティ値がセレクター内の対応する識別子に置き換えられたときにセレクターが true と評価された場合、メッセージセレクターはメッセージと一致します。
メッセージセレクターは String
であり、その構文は SQL92 条件式構文のサブセットに基づいています。メッセージセレクターの値が空の文字列の場合、値は null として扱われ、メッセージコンシューマーのメッセージセレクターがないことを示します。
メッセージセレクターの評価の順序は、優先レベル内で左から右です。括弧を使用して、この順序を変更できます。
事前定義されたセレクターリテラルと演算子名は、ここでは大文字で示されています。ただし、大文字と小文字は区別されません。
セレクターには次のものを含めることができます。
'literal'
と 'literal''s'
です。Java プログラミング言語の文字列リテラルと同様に、これらは Unicode 文字エンコーディングを使用します。57
、-957
、+62
などの小数点のない数値です。long
の範囲の数値がサポートされています。正確な数値リテラルは、Java プログラミング言語の整数リテラル構文を使用します。7E3
や -57.9E2
などの科学的記数法の数値、または 7.
、-95.7
、+6.2
などの 10 進数の数値です。double
の範囲の番号がサポートされています。近似リテラルは、Java プログラミング言語の浮動小数点リテラル構文を使用します。TRUE
および FALSE
。Character.isJavaLetter
が true を返す任意の文字です。これには、'_'
および '$'
が含まれます。文字または数字は、Character.isJavaLetterOrDigit
メソッドが true を返す任意の文字です。NULL
、TRUE
、FALSE
という名前にすることはできません。NOT
、AND
、OR
、BETWEEN
、LIKE
、IN
、IS
または ESCAPE
にすることはできません。NULL
です。myMessage.setStringProperty("NumberOfOrders", "2");文字列は算術式で使用できないため、メッセージセレクターの次の式は false と評価されます。
"NumberOfOrders > 1"
JMSDeliveryMode
、JMSPriority
、JMSMessageID
、JMSTimestamp
、JMSCorrelationID
、JMSType
に制限されています。JMSMessageID
、JMSCorrelationID
、JMSType
値は null の場合があり、null の場合は NULL
値として扱われます。'JMSX'
で始まる名前は、Jakarta Messaging で定義されたプロパティ名です。'JMS_'
で始まる名前は、プロバイダー固有のプロパティ名です。'JMS'
で始まらない名前は、アプリケーション固有のプロパティ名です。true
の一致を評価するセレクター。false
または不明と評価されるセレクターが一致しません。()
がサポートされています。NOT
、AND
、OR
=
、>
、>=
、<
、<=
、<>
(次の値に等しくない)NULL
と評価された場合、式の値は不明です。=
と <>
に制限されています。2 つの文字列は、同じ文字シーケンスが含まれている場合にのみ等しくなります。+
, -
(単項)*
, /
(乗算と除算)+
, -
(加減)arithmetic-expr1 [NOT] BETWEEN arithmetic-expr2 AND arithmetic-expr3
(比較演算子)"age BETWEEN 15 AND 19"
は "age >= 15 AND age <= 19"
と同等です "age NOT BETWEEN 15 AND 19"
は "age < 15 OR age > 19"
と同等です identifier [NOT] IN (string-literal1, string-literal2,...)
(identifier
に String
または NULL
値がある比較演算子)"Country IN (' UK', 'US', 'France')"
は 'UK'
の場合は true、'Peru'
の場合は false です。これは、式 "(Country = ' UK') OR (Country = ' US') OR (Country = ' France')"
と同等です。"Country NOT IN (' UK', 'US', 'France')"
は、'UK'
の場合は false、'Peru'
の場合は true です。これは、式 "NOT ((Country = ' UK') OR (Country = ' US') OR (Country = ' France'))"
と同等です。IN
または NOT IN
操作の ID が NULL
の場合、操作の値は不明です。identifier [NOT] LIKE pattern-value [ESCAPE escape-character]
(比較演算子。identifier
には String
値があります。pattern-value
は文字列リテラルであり、'_'
は任意の 1 文字を表します。'%'
は、空のシーケンスを含む、文字の任意のシーケンスを表します。そして他のすべてのキャラクターは自分自身を表しています。オプションの escape-character
は、pattern-value
の '_'
および '%'
の特別な意味をエスケープするためにその文字が使用される 1 文字の文字列リテラルです。)"phone LIKE '12%3'"
は、'123'
または '12993'
の場合は true、'1234'
の場合は false です。"word LIKE 'l_se'"
は 'lose'
の場合は true、'loose'
の場合は false です。"underscored LIKE '\_%' ESCAPE '\'"
は '_foo'
の場合は true、'bar'
の場合は false です。"phone NOT LIKE '12%3'"
は、'123'
または '12993'
の場合は偽であり、'1234'
の場合は真です。LIKE
または NOT LIKE
操作の identifier
が NULL
の場合、操作の値は不明です。identifier IS NULL
(null ヘッダーフィールド値または欠落しているプロパティ値をテストする比較演算子)"prop_name IS NULL"
identifier IS NOT NULL
(null 以外のヘッダーフィールド値またはプロパティ値の存在をテストする比較演算子)"prop_name IS NOT NULL"
Jakarta Messaging プロバイダーは、メッセージセレクターが表示されるときに、その構文が正しいことを確認する必要があります。構文的に正しくないセレクターを提供するメソッドは、JMSException
になる必要があります。Jakarta Messaging プロバイダーは、セレクターが提示されたときに、オプションでセマンティックチェックを提供することもできます。プロパティ型が不明なため、メッセージセレクタが表示されたときにすべてのセマンティックチェックを実行できるわけではありません。
次のメッセージセレクターは、メッセージ型が車で、色が青で、重量が 2500 ポンドを超えるメッセージを選択します。
"JMSType = 'car' AND color = 'blue' AND weight > 2500"
上記のように、プロパティ値は NULL
の場合があります。NULL
値を含むセレクター式の評価は、SQL92 NULL
セマンティクスによって定義されます。これらのセマンティクスの簡単な説明をここに示します。
SQL は NULL
値を不明として扱います。未知の値との比較または算術は、常に未知の値を生成します。
IS NULL
および IS NOT NULL
演算子は、不明な値をそれぞれの TRUE
および FALSE
値に変換します。
ブール演算子は、次の表で定義されている 3 値論理を使用します。
AND
演算子の定義
| AND | T | F | U +------+-------+-------+------- | T | T | F | U | F | F | F | F | U | U | F | U +------+-------+-------+-------
OR
演算子の定義
| OR | T | F | U +------+-------+-------+-------- | T | T | T | T | F | T | F | U | U | T | U | U +------+-------+-------+-------
NOT
演算子の定義
| NOT +------+------ | T | F | F | T | U | U +------+-------
メッセージセレクターで使用される場合、JMSDeliveryMode
ヘッダーフィールドは値 'PERSISTENT'
および 'NON_PERSISTENT'
を持つものとして扱われます。
日付と時刻の値は、標準の long
ミリ秒値を使用する必要があります。日付または時刻リテラルがメッセージセレクターに含まれている場合、ミリ秒値の整数リテラルである必要があります。ミリ秒値を生成する標準的な方法は、java.util.Calendar
を使用することです。
SQL は固定 10 進比較と算術をサポートしていますが、Jakarta Messaging メッセージセレクターはサポートしていません。これが、正確な数値リテラルを小数のないものに制限する理由です(そして、近似数値の代替表現として小数のある数値を追加します)。
SQL コメントはサポートされていません。
MessageConsumer.receive()
, MessageConsumer.receive(long)
, MessageConsumer.receiveNoWait()
, MessageListener.onMessage(Message)
, BytesMessage
, MapMessage
, ObjectMessage
, StreamMessage
, TextMessage
修飾子と型 | フィールドと説明 |
---|---|
static long | DEFAULT_DELIVERY_DELAY メッセージプロデューサーのデフォルトの配信遅延はゼロです。 |
static int | DEFAULT_DELIVERY_MODE メッセージプロデューサーのデフォルトの配信モードは PERSISTENT です。 |
static int | DEFAULT_PRIORITY メッセージプロデューサーのデフォルトの優先度は 4 です。 |
static long | DEFAULT_TIME_TO_LIVE メッセージプロデューサーのデフォルトの存続時間は無制限です。メッセージが期限切れになることはありません。 |
修飾子と型 | メソッドと説明 |
---|---|
void | acknowledge() この消費されたメッセージのセッションのすべての消費されたメッセージを確認します。 |
void | clearBody() メッセージ本文をクリアします。 |
void | clearProperties() メッセージのプロパティをクリアします。 |
<T> T | getBody(ClassSE<T> c) 指定された型のオブジェクトとしてメッセージ本文を返します。 |
boolean | getBooleanProperty(StringSE name) 指定された名前の boolean プロパティの値を返します。 |
byte | getByteProperty(StringSE name) 指定された名前の byte プロパティの値を返します。 |
double | getDoubleProperty(StringSE name) 指定された名前の double プロパティの値を返します。 |
float | getFloatProperty(StringSE name) 指定された名前の float プロパティの値を返します。 |
int | getIntProperty(StringSE name) 指定された名前の int プロパティの値を返します。 |
StringSE | getJMSCorrelationID() メッセージの相関 ID を取得します。 |
byte[] | getJMSCorrelationIDAsBytes() メッセージのバイト配列として相関 ID を取得します。 |
int | getJMSDeliveryMode() このメッセージに指定された DeliveryMode 値を取得します。 |
long | getJMSDeliveryTime() メッセージの配信時間の値を取得します。 |
Destination | getJMSDestination() このメッセージの Destination オブジェクトを取得します。 |
long | getJMSExpiration() メッセージの有効期限を取得します。 |
StringSE | getJMSMessageID() メッセージ ID を取得します。 |
int | getJMSPriority() メッセージの優先度を取得します。 |
boolean | getJMSRedelivered() このメッセージが再配信されているかどうかの指標を取得します。 |
Destination | getJMSReplyTo() このメッセージへの応答の送信先となる Destination オブジェクトを取得します。 |
long | getJMSTimestamp() メッセージのタイムスタンプを取得します。 |
StringSE | getJMSType() メッセージの送信時にクライアントから提供されたメッセージ型識別子を取得します。 |
long | getLongProperty(StringSE name) 指定された名前の long プロパティの値を返します。 |
ObjectSE | getObjectProperty(StringSE name) 指定された名前の Java オブジェクトプロパティの値を返します。 |
EnumerationSE | getPropertyNames() すべてのプロパティ名の Enumeration を返します。 |
short | getShortProperty(StringSE name) 指定された名前の short プロパティの値を返します。 |
StringSE | getStringProperty(StringSE name) 指定された名前の String プロパティの値を返します。 |
boolean | isBodyAssignableTo(ClassSE c) メッセージ本文を指定された型に割り当てることができるかどうかを返します。 |
boolean | propertyExists(StringSE name) プロパティ値が存在するかどうかを示します。 |
void | setBooleanProperty(StringSE name, boolean value) 指定された名前の boolean プロパティ値をメッセージに設定します。 |
void | setByteProperty(StringSE name, byte value) 指定された名前の byte プロパティ値をメッセージに設定します。 |
void | setDoubleProperty(StringSE name, double value) 指定された名前の double プロパティ値をメッセージに設定します。 |
void | setFloatProperty(StringSE name, float value) 指定された名前の float プロパティ値をメッセージに設定します。 |
void | setIntProperty(StringSE name, int value) 指定された名前の int プロパティ値をメッセージに設定します。 |
void | setJMSCorrelationID(StringSE correlationID) メッセージの相関 ID を設定します。 |
void | setJMSCorrelationIDAsBytes(byte[] correlationID) 相関 ID をメッセージのバイト配列として設定します。 |
void | setJMSDeliveryMode(int deliveryMode) このメッセージの DeliveryMode 値を設定します。 |
void | setJMSDeliveryTime(long deliveryTime) メッセージの配信時間の値を設定します。 |
void | setJMSDestination(Destination destination) このメッセージの Destination オブジェクトを設定します。 |
void | setJMSExpiration(long expiration) メッセージの有効期限値を設定します。 |
void | setJMSMessageID(StringSE id) メッセージ ID を設定します。 |
void | setJMSPriority(int priority) このメッセージの優先度を設定します。 |
void | setJMSRedelivered(boolean redelivered) このメッセージを再配信するかどうかを指定します。 |
void | setJMSReplyTo(Destination replyTo) このメッセージへの応答の送信先となる Destination オブジェクトを設定します。 |
void | setJMSTimestamp(long timestamp) メッセージのタイムスタンプを設定します。 |
void | setJMSType(StringSE type) メッセージ型を設定します。 |
void | setLongProperty(StringSE name, long value) 指定された名前の long プロパティ値をメッセージに設定します。 |
void | setObjectProperty(StringSE name, ObjectSE value) 指定された名前の Java オブジェクトプロパティ値をメッセージに設定します。 |
void | setShortProperty(StringSE name, short value) 指定された名前の short プロパティ値をメッセージに設定します。 |
void | setStringProperty(StringSE name, StringSE value) 指定された名前の String プロパティ値をメッセージに設定します。 |
static final int DEFAULT_DELIVERY_MODE
PERSISTENT
です。static final int DEFAULT_PRIORITY
static final long DEFAULT_TIME_TO_LIVE
static final long DEFAULT_DELIVERY_DELAY
StringSE getJMSMessageID() throws JMSException
JMSMessageID
ヘッダーフィールドには、プロバイダーによって送信された各メッセージを一意に識別する値が含まれています。
メッセージが送信されるとき、JMSMessageID
は無視できます。send
または publish
メソッドが戻ると、プロバイダーによって割り当てられた値が含まれます。
JMSMessageID
は String
値であり、履歴リポジトリ内のメッセージを識別するための一意のキーとして機能する必要があります。一意性の正確な範囲はプロバイダーによって定義されます。少なくとも、プロバイダーの特定のインストールに関するすべてのメッセージをカバーする必要があります。インストールは、接続されたメッセージルーターのセットです。
すべての JMSMessageID
値は、接頭辞 'ID:'
で始まる必要があります。異なるプロバイダー間でのメッセージ ID 値の一意性は必要ありません。
メッセージ ID はメッセージの作成とサイズの増加にいくらかの努力を要するため、一部の Jakarta Messaging プロバイダーは、メッセージ ID がアプリケーションによって使用されていないというヒントが与えられた場合、メッセージのオーバーヘッドを最適化できる場合があります。MessageProducer.setDisableMessageID
メソッドを呼び出すことにより、Jakarta Messaging クライアントは、そのメッセージプロデューサーによって送信されるすべてのメッセージに対してこの潜在的な最適化を可能にします。Jakarta Messaging プロバイダーがこのヒントを受け入れる場合、これらのメッセージのメッセージ ID を null に設定する必要があります。プロバイダーがヒントを無視する場合は、メッセージ ID を通常の一意の値に設定する必要があります。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージ ID を取得できない場合。setJMSMessageID(String)
, MessageProducer.setDisableMessageID(boolean)
void setJMSMessageID(StringSE id) throws JMSException
このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用してメッセージ ID を構成することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
id
- メッセージの IDJMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ ID の設定に失敗した場合。getJMSMessageID()
long getJMSTimestamp() throws JMSException
JMSTimestamp
ヘッダーフィールドには、メッセージが送信されるプロバイダーに渡された時刻が含まれます。トランザクションまたは他のクライアント側のメッセージのキューイングのために実際の送信が後で発生する可能性があるため、メッセージが実際に送信された時刻ではありません。
メッセージが送信されると、JMSTimestamp
は無視されます。send
または publish
メソッドが戻ると、呼び出しと戻りの間のどこかに時間値が含まれます。この値は、Java プログラミング言語の通常のミリ時間値の形式です。
タイムスタンプはメッセージのサイズを作成して増やすためにある程度の努力を要するため、一部の Jakarta Messaging プロバイダーは、タイムスタンプがアプリケーションによって使用されていないというヒントが与えられた場合、メッセージのオーバーヘッドを最適化できる場合があります。MessageProducer.setDisableMessageTimestamp
メソッドを呼び出すことにより、Jakarta Messaging クライアントは、そのメッセージプロデューサーによって送信されるすべてのメッセージに対してこの潜在的な最適化を可能にします。Jakarta Messaging プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプはゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがタイムスタンプの取得に失敗した場合。setJMSTimestamp(long)
, MessageProducer.setDisableMessageTimestamp(boolean)
void setJMSTimestamp(long timestamp) throws JMSException
このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用してメッセージのタイムスタンプを設定することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
timestamp
- このメッセージのタイムスタンプ JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがタイムスタンプの設定に失敗した場合。getJMSTimestamp()
byte[] getJMSCorrelationIDAsBytes() throws JMSException
JMSCorrelationID
に byte[]
値を使用することは移植できません。
JMSException
- Jakarta Messaging プロバイダーが何らかの内部エラーのために相関 ID を取得できない場合。setJMSCorrelationID(String)
, getJMSCorrelationID()
, setJMSCorrelationIDAsBytes(byte[])
void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException
配列はメソッドが戻る前にコピーされるため、配列を今後変更してもこのメッセージヘッダーは変更されません。
プロバイダーが相関 ID のネイティブの概念をサポートしている場合、Jakarta Messaging クライアントは、ネイティブメッセージングクライアントが期待する値と一致するように特定の JMSCorrelationID
値を割り当てる必要がある場合があります。ネイティブ相関 ID 値のない Jakarta Messaging プロバイダーは、このメソッドとそれに対応する get メソッドをサポートする必要はありません。それらの実装は java.lang.UnsupportedOperationException
をスローする可能性があります。
JMSCorrelationID
に byte[]
値を使用することは移植できません。
correlationID
- バイトの配列としての相関 ID 値 JMSException
- 内部エラーのために Jakarta Messaging プロバイダーが相関 ID の設定に失敗した場合。setJMSCorrelationID(String)
, getJMSCorrelationID()
, getJMSCorrelationIDAsBytes()
void setJMSCorrelationID(StringSE correlationID) throws JMSException
クライアントは、JMSCorrelationID
ヘッダーフィールドを使用して、あるメッセージを別のメッセージにリンクできます。一般的な使用箇所は、レスポンスメッセージをそのリクエストメッセージにリンクすることです。
JMSCorrelationID
は、次のいずれかを保持できます。
String
byte[]
値 Jakarta Messaging プロバイダーによって送信される各メッセージにはメッセージ ID 値が割り当てられるため、メッセージ ID を介してメッセージをリンクすると便利です。すべてのメッセージ ID 値は、'ID:'
プレフィックスで始まる必要があります。
場合によっては、アプリケーション(複数のクライアントで構成されている)は、メッセージをリンクするためにアプリケーション固有の値を使用する必要があります。たとえば、アプリケーションは JMSCorrelationID
を使用して、外部情報を参照する値を保持する場合があります。アプリケーション指定の値は、'ID:'
プレフィックスで始まってはなりません。これは、プロバイダーが生成したメッセージ ID 値用に予約されています。
プロバイダーが相関 ID のネイティブの概念をサポートしている場合、Jakarta Messaging クライアントは、Jakarta Messaging API を使用しないクライアントが期待する値と一致するように、特定の JMSCorrelationID
値を割り当てる必要がある場合があります。この目的のために byte[]
値が使用されます。ネイティブ相関 ID 値のない Jakarta Messaging プロバイダーは、byte[]
値をサポートする必要はありません。JMSCorrelationID
に byte[]
値を使用することは移植できません。
correlationID
- 参照されているメッセージのメッセージ IDJMSException
- 内部エラーのために Jakarta Messaging プロバイダーが相関 ID の設定に失敗した場合。getJMSCorrelationID()
, getJMSCorrelationIDAsBytes()
, setJMSCorrelationIDAsBytes(byte[])
StringSE getJMSCorrelationID() throws JMSException
このメソッドは、プロバイダー固有のメッセージ ID またはアプリケーション固有の String
値のいずれかである相関 ID 値を返すために使用されます。
String
としてのメッセージの相関 ID JMSException
- Jakarta Messaging プロバイダーが何らかの内部エラーのために相関 ID を取得できない場合。setJMSCorrelationID(String)
, getJMSCorrelationIDAsBytes()
, setJMSCorrelationIDAsBytes(byte[])
Destination getJMSReplyTo() throws JMSException
Destination
オブジェクトを取得します。Destination
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが JMSReplyTo
宛先の取得に失敗した場合。setJMSReplyTo(Destination)
void setJMSReplyTo(Destination replyTo) throws JMSException
Destination
オブジェクトを設定します。JMSReplyTo
ヘッダーフィールドには、現在のメッセージへの応答を送信する宛先が含まれています。null の場合、応答は期待されません。宛先は、Queue
オブジェクトまたは Topic
オブジェクトのいずれかです。
null JMSReplyTo
値で送信されたメッセージは、何らかのイベントの通知である場合もあれば、送信者が関心があると考えるデータである場合もあります。
JMSReplyTo
値を持つメッセージは、通常、レスポンスを期待します。レスポンスはオプションです。決定するのはクライアント次第です。これらのメッセージはリクエストと呼ばれます。リクエストにレスポンスして送信されるメッセージは、レスポンスと呼ばれます。
場合によっては、クライアントは、以前に送信したリクエストを、受信したばかりの応答と一致させたい場合があります。クライアントは、この目的で JMSCorrelationID
ヘッダーフィールドを使用できます。
replyTo
- このメッセージへのレスポンスの送信先となる Destination
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーが JMSReplyTo
宛先の設定に失敗した場合。getJMSReplyTo()
Destination getJMSDestination() throws JMSException
Destination
オブジェクトを取得します。JMSDestination
ヘッダーフィールドには、メッセージの送信先が含まれています。
メッセージが送信されるとき、このフィールドは無視されます。send
または publish
メソッドの完了後、フィールドはメソッドによって指定された宛先を保持します。
メッセージを受信するとき、その JMSDestination
値は、メッセージが送信されたときに割り当てられた値と同じである必要があります。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが宛先を取得できない場合。setJMSDestination(Destination)
void setJMSDestination(Destination destination) throws JMSException
Destination
オブジェクトを設定します。このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用して、メッセージの宛先を構成することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
destination
- このメッセージの宛先 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが宛先の設定に失敗した場合。getJMSDestination()
int getJMSDeliveryMode() throws JMSException
DeliveryMode
値を取得します。JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが配信モードを取得できなかった場合 setJMSDeliveryMode(int)
, DeliveryMode
void setJMSDeliveryMode(int deliveryMode) throws JMSException
DeliveryMode
値を設定します。このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用して、メッセージの配信モードを構成することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
deliveryMode
- このメッセージの配信モード JMSException
- 内部エラーのために Jakarta Messaging プロバイダーが配信モードの設定に失敗した場合。getJMSDeliveryMode()
, DeliveryMode
boolean getJMSRedelivered() throws JMSException
クライアントが JMSRedelivered
フィールドが設定されたメッセージを受信した場合、このメッセージは以前に配信された可能性がありますが、その時点で受信が確認されていなかった可能性があります。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが再配信状態を取得できない場合。setJMSRedelivered(boolean)
void setJMSRedelivered(boolean redelivered) throws JMSException
このメソッドは、メッセージの配信時にこのフィールドを設定するためにのみ Jakarta Messaging プロバイダーが使用するためのものです。クライアントがこのメッセージを使用して、メッセージの再配信ステータスを構成することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
redelivered
- このメッセージが再配信されているかどうかの表示 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが再配信状態の設定に失敗した場合。getJMSRedelivered()
StringSE getJMSType() throws JMSException
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ型の取得に失敗した場合。setJMSType(String)
void setJMSType(StringSE type) throws JMSException
一部の Jakarta Messaging プロバイダーは、アプリケーションによって送信されるメッセージの定義を含むメッセージリポジトリを使用します。JMSType
ヘッダーフィールドは、プロバイダーのリポジトリ内のメッセージの定義を参照する場合があります。
Jakarta Messaging API は、標準のメッセージ定義リポジトリを定義しておらず、それに含まれる定義の命名ポリシーも定義していません。
一部のメッセージングシステムでは、各アプリケーションメッセージのメッセージ型定義を作成し、各メッセージでその型を指定する必要があります。このような Jakarta Messaging プロバイダーと連携するには、アプリケーションが JMSType
を使用するかどうかに関係なく、Jakarta Messaging クライアントは JMSType
に値を割り当てる必要があります。これにより、フィールドを必要とするプロバイダーに対してフィールドが適切に設定されます。
移植性を確保するために、Jakarta Messaging クライアントは、インストール時に現在のプロバイダーのメッセージリポジトリで定義されている値に構成できる JMSType
のシンボリック値を使用する必要があります。文字列リテラルが使用されている場合、一部の Jakarta Messaging プロバイダーでは有効な型名ではない可能性があります。
type
- メッセージ型 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージ型の設定に失敗した場合。getJMSType()
long getJMSExpiration() throws JMSException
メッセージが送信されると、JMSExpiration
ヘッダーフィールドは未割り当てのままになります。send
または publish
メソッドの完了後、メッセージの有効期限を保持します。これは、1970 年 1 月 1 日 UTC の有効期限と午前 0 時の差をミリ秒単位で測定したものです。
存続可能時間がゼロとして指定されている場合、JMSExpiration
はゼロに設定され、メッセージが期限切れにならないことを示します。
メッセージの有効期限に達した場合、プロバイダーはメッセージを破棄する必要があります。Jakarta Messaging API は、メッセージの有効期限の通知の形式を定義していません。
クライアントは、期限切れのメッセージを受信しないでください。ただし、Jakarta Messaging API は、これが発生しないことを保証するものではありません。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージの有効期限を取得できない場合。setJMSExpiration(long)
void setJMSExpiration(long expiration) throws JMSException
このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用して、メッセージの有効期限を構成することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
expiration
- メッセージの有効期限 JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージの有効期限を設定できない場合。getJMSExpiration()
long getJMSDeliveryTime() throws JMSException
メッセージが送信されると、JMSDeliveryTime
ヘッダーフィールドは未割り当てのままになります。send
または publish
メソッドの完了後、メッセージの配信時間を保持します。これは、1970 年 1 月 1 日 UTC の配達時間と深夜の間のミリ秒単位で測定された差です。
メッセージの配信時間は、Jakarta Messaging プロバイダーがメッセージをコンシューマーに配信する可能性のある最も早い時間です。プロバイダーは、配信時間に達する前にメッセージを配信してはなりません。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが配信時間を取得できない場合。setJMSDeliveryTime(long)
void setJMSDeliveryTime(long deliveryTime) throws JMSException
このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用して、メッセージの配信時間を設定することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
deliveryTime
- メッセージの配信時間の値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが配信時間を設定できない場合。getJMSDeliveryTime()
int getJMSPriority() throws JMSException
Jakarta Messaging API は、優先度の値の 10 レベルを定義し、0 が最低の優先度、9 が最高の優先度です。さらに、クライアントは、優先度 0 〜 4 を通常の優先度のグラデーションと見なし、優先度 5 〜 9 を優先度のグラデーションと見なす必要があります。
Jakarta Messaging API では、プロバイダーがメッセージの優先順位を厳密に実装する必要はありません。ただし、通常のメッセージよりも優先メッセージを配信するように最善を尽くす必要があります。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージの優先順位を取得できない場合。setJMSPriority(int)
void setJMSPriority(int priority) throws JMSException
このメソッドは、Jakarta Messaging プロバイダーが、メッセージの送信時にこのフィールドを設定するためにのみ使用します。クライアントがこのメッセージを使用して、メッセージの優先度レベルを構成することはできません。このメソッドはパブリックであり、実装が独自のものではないメッセージを送信するときに Jakarta Messaging プロバイダーがこのフィールドを設定できるようにします。
priority
- このメッセージの優先度 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージの優先順位を設定できない場合。getJMSPriority()
void clearProperties() throws JMSException
メッセージのヘッダーフィールドと本文はクリアされません。
JMSException
- Jakarta Messaging プロバイダーが内部エラーのためにメッセージプロパティをクリアできない場合。boolean propertyExists(StringSE name) throws JMSException
name
- テストするプロパティの名前 JMSException
- Jakarta Messaging プロバイダーが、内部エラーのためにプロパティが存在するかどうかを判別できない場合。boolean getBooleanProperty(StringSE name) throws JMSException
boolean
プロパティの値を返します。name
- boolean
プロパティの名前 boolean
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。byte getByteProperty(StringSE name) throws JMSException
byte
プロパティの値を返します。name
- byte
プロパティの名前 byte
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。short getShortProperty(StringSE name) throws JMSException
short
プロパティの値を返します。name
- short
プロパティの名前 short
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。int getIntProperty(StringSE name) throws JMSException
int
プロパティの値を返します。name
- int
プロパティの名前 int
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。long getLongProperty(StringSE name) throws JMSException
long
プロパティの値を返します。name
- long
プロパティの名前 long
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。float getFloatProperty(StringSE name) throws JMSException
float
プロパティの値を返します。name
- float
プロパティの名前 float
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。double getDoubleProperty(StringSE name) throws JMSException
double
プロパティの値を返します。name
- double
プロパティの名前 double
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。StringSE getStringProperty(StringSE name) throws JMSException
String
プロパティの値を返します。name
- String
プロパティの名前 String
プロパティ値。この名前のプロパティがない場合は、null 値が返されます JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatException
- この型変換が無効な場合。ObjectSE getObjectProperty(StringSE name) throws JMSException
このメソッドを使用して、同等の setObjectProperty
メソッド呼び出しまたは同等のプリミティブ settypeProperty
メソッドを使用して、メッセージにプロパティとして格納されているオブジェクトをオブジェクト化された形式で返すことができます。
name
- Java オブジェクトプロパティの名前 int
として設定されている場合、Integer
が返されます)。この名前のプロパティがない場合は、null 値が返されます JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。EnumerationSE getPropertyNames() throws JMSException
Enumeration
を返します。Jakarta Messaging 標準ヘッダーフィールドはプロパティとは見なされず、この列挙では返されないことに注意してください。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ名を取得できない場合。void setBooleanProperty(StringSE name, boolean value) throws JMSException
boolean
プロパティ値をメッセージに設定します。name
- boolean
プロパティの名前 value
- 設定する boolean
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setByteProperty(StringSE name, byte value) throws JMSException
byte
プロパティ値をメッセージに設定します。name
- byte
プロパティの名前 value
- 設定する byte
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setShortProperty(StringSE name, short value) throws JMSException
short
プロパティ値をメッセージに設定します。name
- short
プロパティの名前 value
- 設定する short
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setIntProperty(StringSE name, int value) throws JMSException
int
プロパティ値をメッセージに設定します。name
- int
プロパティの名前 value
- 設定する int
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setLongProperty(StringSE name, long value) throws JMSException
long
プロパティ値をメッセージに設定します。name
- long
プロパティの名前 value
- 設定する long
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setFloatProperty(StringSE name, float value) throws JMSException
float
プロパティ値をメッセージに設定します。name
- float
プロパティの名前 value
- 設定する float
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setDoubleProperty(StringSE name, double value) throws JMSException
double
プロパティ値をメッセージに設定します。name
- double
プロパティの名前 value
- 設定する double
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setStringProperty(StringSE name, StringSE value) throws JMSException
String
プロパティ値をメッセージに設定します。name
- String
プロパティの名前 value
- 設定する String
プロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageNotWriteableException
- プロパティが読み取り専用の場合 void setObjectProperty(StringSE name, ObjectSE value) throws JMSException
このメソッドは、オブジェクト化されたプリミティブオブジェクト型(Integer
、Double
、Long
...)および String
オブジェクトに対してのみ機能することに注意してください。
name
- Java オブジェクトプロパティの名前 value
- 設定する Java オブジェクトのプロパティ値 JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE
- 名前が null の場合、または名前が空の文字列の場合。MessageFormatException
- オブジェクトが無効な場合 MessageNotWriteableException
- プロパティが読み取り専用の場合 void acknowledge() throws JMSException
消費されたすべての Jakarta Messaging メッセージは、クライアントがその JMS セッションの消費されたメッセージを明示的に確認応答するように指定した場合に使用する acknowledge
メソッドをサポートします。消費されたメッセージに対して acknowledge
を呼び出すことにより、クライアントは、メッセージが配信されたセッションによって消費されたすべてのメッセージを確認します。
acknowledge
の呼び出しは、トランザクションセッションと暗黙の確認応答モードを使用するように指定されたセッションの両方で無視されます。
クライアントは、消費された各メッセージを個別に確認することも、アプリケーション定義のグループとしてメッセージを確認することを選択することもできます。(これは、グループの最後に受信したメッセージで acknowledge を呼び出すことによって実行され、それによってセッションによって消費されたすべてのメッセージを確認します。)
受信したが確認応答されていないメッセージは、再配信される場合があります。
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージの確認応答に失敗した場合。IllegalStateException
- このメソッドが閉じたセッションで呼び出された場合。Session.CLIENT_ACKNOWLEDGE
void clearBody() throws JMSException
このメッセージ本文が読み取り専用の場合、このメソッドを呼び出すと、メッセージ本文は新しく作成されたメッセージの空の本文と同じ状態になります。
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ本文のクリアに失敗した場合。<T> T getBody(ClassSE<T> c) throws JMSException
T
- メッセージ本文の型 c
- メッセージ本文が割り当てられる型。TextMessage
の場合、このパラメーターは String.class
または String
が割り当て可能な別の型に設定する必要があります。ObjectMessage
の場合、パラメーターは java.io.Serializable.class
または本文が割り当て可能な別の型に設定する必要があります。MapMessage
の場合、このパラメーターは java.util.Map.class
(または java.lang.Object.class
)に設定する必要があります。BytesMessage
の場合、このパラメーターは byte[].class
(または java.lang.Object.class
)に設定する必要があります。このメソッドは、使用の前後に BytesMessage
をリセットします。TextMessage
、ObjectMessage
、MapMessage
または BytesMessage
であり、メッセージに本文がない場合、上記は適用されず、このパラメーターは任意の型に設定できます。戻り値は常に null になります。Message
(ただし、そのサブ型の 1 つではない)の場合、このパラメーターは任意の型に設定できます。戻り値は常に null になります。MessageFormatException
-StreamMessage
の場合ObjectMessage
であり、オブジェクトの逆直列化が失敗した場合。JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージ本文の取得に失敗した場合。boolean isBodyAssignableTo(ClassSE c) throws JMSException
getBody
を呼び出しても、MessageFormatException はスローされません。 メッセージが StreamMessage
の場合、常に false が返されます。メッセージが ObjectMessage
であり、オブジェクトの逆直列化が失敗した場合、false が返されます。メッセージに本文がない場合は、任意の型を指定でき、true が返されます。
c
- 指定された型TextMessage
の場合、このパラメーターが String.class
または String
が割り当て可能な別の型に設定されている場合にのみ、このメソッドは true を返します。ObjectMessage
の場合、このメソッドは、このパラメーターが java.io.Serializable.class
または本体が割り当て可能な別のクラスに設定されている場合にのみ true を返します。MapMessage
の場合、このパラメーターが java.util.Map.class
(または java.lang.Object.class
)に設定されている場合にのみ、このメソッドは true を返します。BytesMessage
の場合、このパラメーターが byte[].class
(または java.lang.Object.class
)に設定されている場合にのみ、このメソッドは true を返します。TextMessage
、ObjectMessage
、MapMessage
または BytesMessage
であり、メッセージに本文がない場合、上記は適用されず、このメソッドは、このパラメーターの値に関係なく true を返します。Message
(ただし、そのサブ型の 1 つではない)の場合、このメソッドは、このパラメーターの値に関係なく true を返します。JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが値を返さない場合。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.