インターフェース JMSProducer
JMSProducer は、JMSContext に代わってメッセージを送信するために使用される単純なオブジェクトです。JMSProducer のインスタンスは、JMSContext で createProducer メソッドを呼び出すことによって作成されます。指定された宛先にメッセージを送信するためのさまざまな send メソッドを提供します。また、メッセージまたはメッセージのセットを送信する前に、メッセージ送信オプション、メッセージプロパティ、メッセージヘッダーを指定できるようにするメソッドも提供します。 メッセージ送信オプションは、次の 1 つ以上の方法を使用して指定できます: setDeliveryMode、setPriority、setTimeToLive、setDeliveryDelay、setDisableMessageTimestamp、setDisableMessageID、setAsync。
メッセージプロパティは、9 つの setProperty メソッドの 1 つ以上を使用して指定できます。これらのメソッドを使用して設定されたメッセージプロパティは、メッセージに直接設定されたメッセージプロパティを上書きします。
メッセージヘッダーは、setJMSCorrelationID、setJMSCorrelationIDAsBytes、setJMSType または setJMSReplyTo の 1 つ以上の方法を使用して指定できます。これらのメソッドを使用して設定されたメッセージヘッダーは、メッセージに直接設定されたメッセージヘッダーを上書きします。
上記のすべてのメソッドは JMSProducer を返し、メソッド呼び出しを連鎖させて、流動的なプログラミングスタイルを可能にします。例:
context.createProducer().setDeliveryMode(DeliveryMode.NON_PERSISTENT).setTimeToLive(1000).send(destination、message);
JMSProducer のインスタンスは、自由に作成でき、大量のリソースを消費しない軽量オブジェクトを対象としています。このインターフェースは close メソッドを提供しません。
- 導入:
- JMS 2.0
- バージョン:
- Jakarta Messaging 2.0
方法の概要
修飾子と型メソッド説明このJMSProducerに設定されているメッセージプロパティをすべてクリアしますgetAsync()このJMSProducerオブジェクトでのsendへの後続の呼び出しが非同期になるように構成されている場合、このメソッドは以前に構成されたCompletionListenerを返します。booleangetBooleanProperty(StringSE name) このJMSProducerに設定され、booleanに変換された指定された名前のメッセージプロパティを返します。bytegetByteProperty(StringSE name) このJMSProducerに設定され、Stringに変換された指定された名前のメッセージプロパティを返します。longメッセージが送信されてから Jakarta Messaging プロバイダーがメッセージをコンシューマーに配信するまでに経過する必要がある最小時間をミリ秒単位で取得します。intこのJMSProducerを使用して送信されたメッセージの配信モードを返しますbooleanメッセージ ID が無効になっているかどうかの指標を取得します。booleanメッセージのタイムスタンプが無効になっているかどうかの指標を取得します。doublegetDoubleProperty(StringSE name) このJMSProducerに設定され、doubleに変換された指定された名前のメッセージプロパティを返します。floatgetFloatProperty(StringSE name) このJMSProducerに設定され、floatに変換された指定された名前のメッセージプロパティを返します。intgetIntProperty(StringSE name) このJMSProducerに設定され、intに変換された指定された名前のメッセージプロパティを返します。このJMSProducerに設定されているJMSCorrelationIDヘッダー値をStringとして返します。byte[]このJMSProducerに設定されているJMSCorrelationIDヘッダー値をバイトの配列として返します。このJMSProducerに設定されているJMSReplyToヘッダー値を返します。このJMSProducerに設定されているJMSTypeヘッダー値を返します。longgetLongProperty(StringSE name) このJMSProducerに設定され、longに変換された指定された名前のメッセージプロパティを返します。getObjectProperty(StringSE name) このJMSProducerに設定され、オブジェクト化された形式に変換された、指定された名前のメッセージプロパティを返します。intこのJMSProducerを使用して送信されるメッセージの優先度を返しますこの JMSProducer に設定されているすべてのメッセージプロパティの名前の変更不可能なSetビューを返します。shortgetShortProperty(StringSE name) このJMSProducerに設定され、shortに変換された指定された名前のメッセージプロパティを返します。getStringProperty(StringSE name) このJMSProducerに設定され、Stringに変換された指定された名前のメッセージプロパティを返します。longこのJMSProducerを使用して送信されたメッセージの存続時間を返します。booleanpropertyExists(StringSE name) 指定された名前のメッセージプロパティがこのJMSProducerに設定されているかどうかを示しますsend(Destination destination, byte[] body) このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のBytesMessageを指定された宛先に送信します。send(Destination destination, Message message) このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された宛先にメッセージを送信します。send(Destination destination, SerializableSE body) このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のObjectMessageを指定された宛先に送信します。send(Destination destination, StringSE body) このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のTextMessageを指定された宛先に送信します。send(Destination destination, MapSE<StringSE, ObjectSE> body) このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のMapMessageを指定された宛先に送信します。setAsync(CompletionListener completionListener) このJMSProducerオブジェクトでのsendへの後続の呼び出しを同期にするか、非同期にするかを指定します。setDeliveryDelay(long deliveryDelay) メッセージが送信されてから Jakarta Messaging プロバイダーがメッセージをコンシューマーに配信するまでに経過する必要がある最小時間をミリ秒単位で設定します。setDeliveryMode(int deliveryMode) このJMSProducerを使用して送信されるメッセージの配信モードを指定しますsetDisableMessageID(boolean value) このJMSProducerを使用して送信されるメッセージのメッセージ ID を無効にできるかどうかを指定しますsetDisableMessageTimestamp(boolean value) このJMSProducerを使用して送信されるメッセージのメッセージタイムスタンプを無効にできるかどうかを指定します。setJMSCorrelationID(StringSE correlationID) このJMSProducerを使用して送信されるメッセージのJMSCorrelationIDヘッダー値が指定された相関 ID に設定されることを指定します。相関 ID はStringとして指定されます。setJMSCorrelationIDAsBytes(byte[] correlationID) このJMSProducerを使用して送信されるメッセージのJMSCorrelationIDヘッダー値が指定された相関 ID に設定されることを指定します。相関 ID はバイトの配列として指定されます。setJMSReplyTo(Destination replyTo) このJMSProducerを使用して送信されるメッセージのJMSReplyToヘッダー値が指定されたDestinationオブジェクトに設定されることを指定します。setJMSType(StringSE type) このJMSProducerを使用して送信されるメッセージのJMSTypeヘッダー値が指定されたメッセージ型に設定されることを指定します。setPriority(int priority) このJMSProducerを使用して送信されるメッセージの優先順位を指定しますsetProperty(StringSE name, boolean value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたboolean値に設定されることを指定します。setProperty(StringSE name, byte value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたbyte値に設定されることを指定します。setProperty(StringSE name, double value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたdouble値に設定されることを指定します。setProperty(StringSE name, float value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたfloat値に設定されることを指定します。setProperty(StringSE name, int value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたint値に設定されることを指定します。setProperty(StringSE name, long value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたlong値に設定されることを指定します。setProperty(StringSE name, short value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたshort値に設定されることを指定します。setProperty(StringSE name, ObjectSE value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定された Java オブジェクト値に設定されることを指定します。setProperty(StringSE name, StringSE value) このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたString値に設定されることを指定します。setTimeToLive(long timeToLive) このJMSProducerを使用して送信されるメッセージの存続時間を指定します。
メソッドの詳細
send
このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された宛先にメッセージを送信します。- パラメーター:
destination- このメッセージの送信先message- 送信するメッセージ- 戻り値:
- この
JMSProducer - 例外:
MessageFormatRuntimeException- 無効なメッセージが指定された場合。InvalidDestinationRuntimeException- クライアントが無効な宛先でこのメソッドを使用する場合。MessageNotWriteableRuntimeException- このJMSProducerがメッセージプロパティを設定するように構成されているが、メッセージのプロパティが読み取り専用である場合JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがメッセージの送信に失敗した場合。
send
このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のTextMessageを指定された宛先に送信します。- パラメーター:
destination- このメッセージの送信先body- 送信されるTextMessageの本体。null 値が指定された場合、本文のないTextMessageが送信されます。- 戻り値:
- この
JMSProducer - 例外:
MessageFormatRuntimeException- 無効なメッセージが指定された場合。InvalidDestinationRuntimeException- クライアントが無効な宛先でこのメソッドを使用する場合。JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがメッセージの送信に失敗した場合。
send
このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のMapMessageを指定された宛先に送信します。- パラメーター:
destination- このメッセージの送信先body- 送信されるMapMessageの本体。null 値が指定された場合、マップエントリのないMapMessageが送信されます。- 戻り値:
- この
JMSProducer - 例外:
MessageFormatRuntimeException- 無効なメッセージが指定された場合。InvalidDestinationRuntimeException- クライアントが無効な宛先でこのメソッドを使用する場合。JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがメッセージの送信に失敗した場合。
send
このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のBytesMessageを指定された宛先に送信します。- パラメーター:
destination- このメッセージの送信先body- 送信されるBytesMessageの本体。null 値が指定された場合、本文のないBytesMessageが送信されます。- 戻り値:
- この
JMSProducer - 例外:
MessageFormatRuntimeException- 無効なメッセージが指定された場合。InvalidDestinationRuntimeException- クライアントが無効な宛先でこのメソッドを使用する場合。JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがメッセージの送信に失敗した場合。
send
このJMSProducerで定義されている送信オプション、メッセージプロパティ、メッセージヘッダーを使用して、指定された本文のObjectMessageを指定された宛先に送信します。- パラメーター:
destination- このメッセージの送信先body- 送信される ObjectMessage の本体。null 値が指定された場合、本文のないObjectMessageが送信されます。- 戻り値:
- この
JMSProducer - 例外:
MessageFormatRuntimeException- 無効なメッセージが指定された場合。InvalidDestinationRuntimeException- クライアントが無効な宛先でこのメソッドを使用する場合。JMSRuntimeException- Jakarta Messaging プロバイダーが内部エラーのためにメッセージの送信に失敗した場合。
setDisableMessageID
このJMSProducerを使用して送信されるメッセージのメッセージ ID を無効にできるかどうかを指定しますメッセージ ID はメッセージのサイズを作成して拡大するために多少の労力を費やすため、一部の Jakarta Messaging プロバイダーは、メッセージ ID がアプリケーションによって使用されていないというヒントが与えられた場合、メッセージのオーバーヘッドを最適化できる場合があります。このメソッドを呼び出すことにより、Jakarta Messaging アプリケーションは、この
JMSProducerを使用して送信されるすべてのメッセージに対して、この潜在的な最適化を可能にします。Jakarta Messaging プロバイダーがこのヒントを受け入れる場合、これらのメッセージのメッセージ ID を null に設定する必要があります。プロバイダーがヒントを無視する場合は、メッセージ ID を通常の一意の値に設定する必要があります。メッセージ ID はデフォルトで有効になっています。
- パラメーター:
value- メッセージ ID を無効にできるかどうかを示します- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ ID を無効に設定できない場合。- 関連事項:
getDisableMessageID
boolean getDisableMessageID()メッセージ ID が無効になっているかどうかの指標を取得します。- 戻り値:
- メッセージ ID が無効になっているかどうかの指標
- 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが、内部エラーのためにメッセージ ID が無効になっているかどうかを判断できない場合。- 関連事項:
setDisableMessageTimestamp
このJMSProducerを使用して送信されるメッセージのメッセージタイムスタンプを無効にできるかどうかを指定します。タイムスタンプはメッセージのサイズを作成して大きくするためにある程度の努力を要するため、一部の Jakarta Messaging プロバイダーは、タイムスタンプがアプリケーションによって使用されていないというヒントが与えられた場合、メッセージのオーバーヘッドを最適化できる場合があります。このメソッドを呼び出すことにより、Jakarta Messaging アプリケーションは、この
JMSProducerを使用して送信されるすべてのメッセージに対してこの潜在的な最適化を可能にします。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプはゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。メッセージのタイムスタンプはデフォルトで有効になっています。
- パラメーター:
value- メッセージのタイムスタンプを無効にできるかどうかを示します- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがタイムスタンプを無効に設定できない場合。- 関連事項:
getDisableMessageTimestamp
boolean getDisableMessageTimestamp()メッセージのタイムスタンプが無効になっているかどうかの指標を取得します。- 戻り値:
- メッセージのタイムスタンプが無効になっているかどうかの指標
- 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが、内部エラーのためにタイムスタンプが無効になっているかどうかを判断できない場合。- 関連事項:
setDeliveryMode
このJMSProducerを使用して送信されるメッセージの配信モードを指定します配信モードはデフォルトで
PERSISTENTに設定されています。- パラメーター:
deliveryMode- 使用するメッセージ配信モード。有効な値はDeliveryMode.NON_PERSISTENTとDeliveryMode.PERSISTENTです- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが配信モードの設定に失敗した場合。- 関連事項:
getDeliveryMode
int getDeliveryMode()このJMSProducerを使用して送信されたメッセージの配信モードを返します- 戻り値:
- メッセージ配信モード
- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーが配信モードを取得できなかった場合- 関連事項:
setPriority
このJMSProducerを使用して送信されるメッセージの優先順位を指定しますJakarta Messaging API は 10 レベルの優先度値を定義し、0 が最低優先度、9 が最高優先度です。クライアントは、優先度 0 〜 4 を通常の優先度のグラデーションと見なし、優先度 5 〜 9 を優先度の優先度のグラデーションと見なす必要があります。優先度はデフォルトで 4 に設定されています。
- パラメーター:
priority- 使用するメッセージの優先度。0 から 9 までの値でなければなりません- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーが優先度の設定に失敗した場合- 関連事項:
getPriority
int getPriority()このJMSProducerを使用して送信されるメッセージの優先度を返します- 戻り値:
- メッセージの優先度
- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーが優先度を取得できなかった場合。- 関連事項:
setTimeToLive
このJMSProducerを使用して送信されるメッセージの存続時間を指定します。これは、メッセージの有効期限を決定するために使用されます。メッセージの有効期限は、メッセージの存続時間と送信時間の合計です。トランザクション送信の場合、これはクライアントがメッセージを送信する時間であり、トランザクションがコミットされる時間ではありません。
クライアントは、期限切れのメッセージを受信しないでください。ただし、Jakarta Messaging は、これが発生しないことを保証するものではありません。
Jakarta Messaging プロバイダーは、メッセージを正確に期限切れにするために最善を尽くす必要があります。ただし、Jakarta Messaging は提供される精度を定義していません。存続時間を単に無視することは受け入れられません。
存続時間はデフォルトでゼロに設定されています。これは、メッセージが期限切れになることはないことを意味します。
- パラメーター:
timeToLive- 使用される存続時間(ミリ秒単位)。ゼロの値は、メッセージが期限切れにならないことを意味します。- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが存続時間を設定できない場合。- 関連事項:
getTimeToLive
long getTimeToLive()このJMSProducerを使用して送信されたメッセージの存続時間を返します。- 戻り値:
- メッセージの存続時間(ミリ秒)。ゼロの値は、メッセージが期限切れにならないことを意味します。
- 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが存続時間を取得できない場合。- 関連事項:
setDeliveryDelay
メッセージが送信されてから Jakarta Messaging プロバイダーがメッセージをコンシューマーに配信するまでに経過する必要がある最小時間をミリ秒単位で設定します。トランザクション送信の場合、この時間は、トランザクションがコミットされたときではなく、クライアントがメッセージを送信したときに始まります。
deliveryDelay はデフォルトでゼロに設定されています。
- パラメーター:
deliveryDelay- ミリ秒単位の配信遅延。- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが内部エラーのために配信遅延の設定に失敗した場合- 関連事項:
getDeliveryDelay
long getDeliveryDelay()メッセージが送信されてから Jakarta Messaging プロバイダーがメッセージをコンシューマーに配信するまでに経過する必要がある最小時間をミリ秒単位で取得します。- 戻り値:
- ミリ秒単位の配信遅延。
- 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが配信遅延を取得できない場合。- 関連事項:
setAsync
このJMSProducerオブジェクトでのsendへの後続の呼び出しを同期にするか、非同期にするかを指定します。指定されたCompletionListenerが null でない場合、sendへの後続の呼び出しは非同期になります。指定されたCompletionListenerが null の場合、sendへの後続の呼び出しは同期されます。sendの呼び出しは、デフォルトで同期されています。sendの呼び出しが非同期の場合、メッセージの送信に関連する作業の一部は別のスレッドで実行され、操作が完了すると、指定された CompletionListener が通知されます。メッセージが正常に送信されると、Jakarta Messaging プロバイダーは CompletionListener オブジェクトのコールバックメソッド onCompletion を呼び出します。そのコールバックが呼び出された場合のみ、アプリケーションは、送信が同期された場合と同じ程度の信頼性でメッセージが正常に送信されたことを確認できます。この程度の信頼性を必要とするアプリケーションは、続行する前にコールバックが呼び出されるまで待機する必要があります。
次の情報は、非同期送信が通常どのように実装されるかを示すことを目的としています。
一部の Jakarta Messaging プロバイダーでは、通常の同期送信では、メッセージを リモート Jakarta Messaging サーバーに送信し、確認応答の受信を待ってから戻ります。このようなプロバイダーは、メッセージを リモート Jakarta Messaging サーバーに送信し、確認応答を待たずに戻ることで、非同期送信を実装することが期待されます。確認応答を受信すると、Jakarta Messaging プロバイダーは、アプリケーション指定の CompletionListener オブジェクトの onCompletion メソッドを呼び出してアプリケーションに通知します。何らかの理由で確認応答が受信されない場合は、Jakarta Messaging プロバイダーは CompletionListener の onException メソッドを呼び出してアプリケーションに通知します。
Jakarta Messaging 仕様で許容される信頼性のレベルが低い場合、通常の同期送信では確認応答を待たないことがあります。その場合、非同期送信は同期送信と同様になることが予想されます。つまり、Jakarta Messaging プロバイダーはメッセージを リモート Jakarta Messaging サーバーに送信し、確認応答を待たずに戻ります。ただし、Jakarta Messaging プロバイダーは、アプリケーション指定の CompletionListener オブジェクトで onCompletion メソッドを呼び出すことにより、送信が完了したことをアプリケーションに通知します。
以下に示す要件を満たしている限り、呼び出し元のスレッドで何を実行し、非同期で何を実行するかを正確に決定するのは Jakarta Messaging プロバイダーの責任です。
サービス品質 : 送信操作が正常に完了した後、つまり通常の同期送信が実行された場合と同じ信頼度でメッセージが正常に送信された後、JMS プロバイダーは CompletionListener の onCompletion メソッドを呼び出す必要があります。これより前に CompletionListener を呼び出してはなりません。
例外 : send メソッドの呼び出し中に例外が発生した場合は、send メソッドを呼び出しているスレッドで適切な例外がスローされる必要があります。この場合、Jakarta Messaging プロバイダーは CompletionListener の onCompletion または onException メソッドを呼び出してはなりません。send メソッドを呼び出しているスレッドでスローできない例外が発生した場合は、Jakarta Messaging プロバイダーは CompletionListener の onException メソッドを呼び出す必要があります。どちらの場合も、例外が発生した場合、メッセージが正常に送信されたかどうかは未定義です。
メッセージの順序 : 同じ JMSContext を使用して複数のメッセージを送信する場合は、Jakarta Messaging メッセージの順序の要件を満たす必要があります。これは、同期送信と非同期送信の組み合わせが実行された場合でも適用されます。アプリケーションは、次のメッセージを送信する前に非同期送信が完了するのを待つ必要はありません。
閉じる、コミット、ロールバック : JMSContext で close メソッドが呼び出された場合、JMS プロバイダーは、オブジェクトを閉じて戻る前に、不完全な送信操作が完了し、すべての
CompletionListenerコールバックが戻るまでブロックする必要があります。セッションがトランザクションされる(ローカルトランザクションを使用する)場合、JMSContext の commit または rollback メソッドが呼び出されると、JMS プロバイダーは、不完全な送信操作が完了し、コミットまたはロールバックを実行する前にすべてのCompletionListenerコールバックが返されるまでブロックする必要があります。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。CompletionListener コールバックメソッドはそれ自体の JMSContext tt で close 、 commit 、または rollback を呼び出さないでください >。これを行うと、 close 、 commit 、または rollback が IllegalStateRuntimeException をスローします。
Jakarta EE での使用に関する制限このメソッドは、Jakarta EE EJB または Web コンテナーでは使用しないでください。これを行うと、
JMSRuntimeExceptionがスローされる可能性がありますが、これは保証されていません。メッセージヘッダー Jakarta Messaging は、" 送信時の Jakarta Messaging プロバイダー " によって設定する必要がある、多数のメッセージヘッダーフィールドとメッセージプロパティを定義します。送信が非同期の場合、これらのフィールドとプロパティは、CompletionListener が呼び出された後にのみ、送信クライアントでアクセスできます。CompletionListener の onException メソッドが呼び出されると、これらのメッセージヘッダーフィールドとプロパティの状態は未定義になります。
スレッドの制限 : 非同期送信を実行するアプリケーションは、JMS で定義されているスレッド制限を確認する必要があります。これは、セッションが一度に 1 つのスレッドのみによって使用される可能性があることを意味します。
CompletionListener を設定しても、セッションは CompletionListener を呼び出す制御スレッド専用にはなりません。アプリケーションスレッドは、非同期送信を実行した後もセッションを引き続き使用できます。ただし、アプリケーションスレッドが同時にセッションを使用している可能性がある場合は、 CompletionListener のコールバックメソッドでセッションを使用しないでください。
Jakarta Messaging プロバイダーによる CompletionListener の使用 : セッションは、一度に 1 つの CompletionListener コールバックメソッドのみを呼び出します。特定の JMSContext に対して、コールバック(
onCompletionとonExceptionの両方)は、send メソッドへの対応する呼び出しと同じ順序で実行されます。Jakarta Messaging プロバイダーは、send メソッドを呼び出しているスレッドから CompletionListener を呼び出さないでください。メッセージオブジェクトの使用に関する制限 : 非同期送信を実行するアプリケーションは、メッセージオブジェクトが一度に 1 つの論理制御スレッドによってアクセスされるように設計されており、同時使用をサポートしないという制限を考慮する必要があります。
send メソッドが返された後、アプリケーションは、CompletionListener の onCompletion または onException メソッドが呼び出されるまで、Message オブジェクトのヘッダー、プロパティ、本文を読み取ろうとしないでください。これは、この間に Jakarta Messaging プロバイダーが別のスレッドで Message オブジェクトを変更している可能性があるためです。send メソッドが返されてから CompletionListener が呼び出されるまでの間に、アプリケーションが Message オブジェクトにアクセスまたは変更しようとすると、Jakarta Messaging プロバイダーは JMSException をスローする場合があります。Jakarta Messaging プロバイダーが例外をスローしない場合、動作は未定義です。
- パラメーター:
completionListener- 非同期送信動作が必要な場合は、送信が完了したときに通知されるように、これをCompletionListenerに設定する必要があります。同期送信動作が必要な場合は、これをnullに設定する必要があります。- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが発生した場合- 関連事項:
getAsync
CompletionListener getAsync()このJMSProducerオブジェクトでのsendへの後続の呼び出しが非同期になるように構成されている場合、このメソッドは以前に構成されたCompletionListenerを返します。sendへの後続の呼び出しが同期するように構成されている場合、このメソッドはnullを返します。- 戻り値:
CompletionListenerまたはnull- 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが必要な情報を取得できない場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたboolean値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するboolean値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたbyte値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するbyte値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたshort値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するshortプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたint値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するintプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたlong値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するlongプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたfloat値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するfloatプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたdouble値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するdoubleプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定されたString値に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定するStringプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。- 関連事項:
setProperty
このJMSProducerを使用して送信されるメッセージで、指定されたプロパティが指定された Java オブジェクト値に設定されることを指定します。このメソッドは、オブジェクト化されたプリミティブオブジェクト型(
Integer、Double、Long...)およびStringオブジェクトに対してのみ機能することに注意してください。これにより、送信されるメッセージにすでに設定されている同じ名前のプロパティが置き換えられます。
- パラメーター:
name- プロパティの名前value- 設定する Java オブジェクトのプロパティ値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティの設定に失敗した場合。IllegalArgumentExceptionSE- 名前が null の場合、または名前が空の文字列の場合。MessageFormatRuntimeException- オブジェクトが無効な場合- 関連事項:
clearProperties
JMSProducer clearProperties()このJMSProducerに設定されているメッセージプロパティをすべてクリアします- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが内部エラーのためにメッセージプロパティをクリアできない場合。
propertyExists
指定された名前のメッセージプロパティがこのJMSProducerに設定されているかどうかを示します- パラメーター:
name- プロパティの名前- 戻り値:
- プロパティが存在するかどうかは true
- 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが、内部エラーのためにプロパティが存在するかどうかを判別できない場合。
getBooleanProperty
このJMSProducerに設定され、booleanに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
booleanに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getByteProperty
このJMSProducerに設定され、Stringに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
byteに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getShortProperty
このJMSProducerに設定され、shortに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
shortに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getIntProperty
このJMSProducerに設定され、intに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
intに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getLongProperty
このJMSProducerに設定され、longに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
longに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getFloatProperty
このJMSProducerに設定され、floatに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
floatに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getDoubleProperty
このJMSProducerに設定され、doubleに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
doubleに変換されたプロパティ値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getStringProperty
このJMSProducerに設定され、Stringに変換された指定された名前のメッセージプロパティを返します。- パラメーター:
name- プロパティの名前- 戻り値:
booleanに変換されたプロパティ値。この名前のプロパティがない場合は、null 値が返されます- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。MessageFormatRuntimeException- この型変換が無効な場合。- 関連事項:
getObjectProperty
このJMSProducerに設定され、オブジェクト化された形式に変換された、指定された名前のメッセージプロパティを返します。このメソッドを使用して、同等の
setObjectPropertyメソッド呼び出しまたは同等のプリミティブsettypePropertyメソッドを使用して、メッセージにプロパティとして格納されているオブジェクトをオブジェクト化された形式で返すことができます。- パラメーター:
name- プロパティの名前- 戻り値:
- 指定された名前の Java オブジェクトプロパティ値(オブジェクト化された形式)(たとえば、プロパティが
intとして設定されている場合、Integerが返されます)。この名前のプロパティがない場合は、null 値が返されます - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ値を取得できない場合。- 関連事項:
getPropertyNames
この JMSProducer に設定されているすべてのメッセージプロパティの名前の変更不可能なSetビューを返します。Jakarta Messaging 標準ヘッダーフィールドはプロパティとは見なされず、このセットでは返されないことに注意してください。
セットは
JMSProducerによってサポートされているため、マップへの変更はセットに反映されます。ただし、セットを変更することはできません。返されたコレクションを直接またはそのイテレータを介して変更しようとすると、java.lang.UnsupportedOperationExceptionになります。その動作は、java.util.CollectionsメソッドunmodifiableSetで定義されている動作と一致します。- 戻り値:
- この
JMSProducerに設定されているすべてのメッセージプロパティの名前を含むSet - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがプロパティ名を取得できない場合。- 関連事項:
setJMSCorrelationIDAsBytes
このJMSProducerを使用して送信されるメッセージのJMSCorrelationIDヘッダー値が指定された相関 ID に設定されることを指定します。相関 ID はバイトの配列として指定されます。これにより、送信されるメッセージにすでに設定されている
JMSCorrelationIDヘッダー値が上書きされます。配列はメソッドが戻る前にコピーされるため、配列を後で変更しても、この
JMSProducerの値は変更されません。プロバイダーが相関 ID のネイティブの概念をサポートしている場合、Jakarta Messaging クライアントは、ネイティブメッセージングクライアントが期待する値と一致するように特定の
JMSCorrelationID値を割り当てる必要がある場合があります。ネイティブ相関 ID 値のない Jakarta Messaging プロバイダーは、このメソッドとそれに対応する get メソッドをサポートする必要はありません。それらの実装はjava.lang.UnsupportedOperationExceptionをスローする可能性があります。JMSCorrelationIDにbyte[]値を使用することは移植できません。- パラメーター:
correlationID- バイトの配列としての相関 ID 値- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが相関 ID の設定に失敗した場合。- 関連事項:
getJMSCorrelationIDAsBytes
byte[] getJMSCorrelationIDAsBytes()このJMSProducerに設定されているJMSCorrelationIDヘッダー値をバイトの配列として返します。JMSCorrelationIDにbyte[]値を使用することは移植できません。- 戻り値:
- バイトの配列としての相関 ID
- 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが何らかの内部エラーのために相関 ID を取得できない場合。- 関連事項:
setJMSCorrelationID
このJMSProducerを使用して送信されるメッセージのJMSCorrelationIDヘッダー値が指定された相関 ID に設定されることを指定します。相関 ID はStringとして指定されます。これにより、送信されるメッセージにすでに設定されている
JMSCorrelationIDヘッダー値が上書きされます。クライアントは、
JMSCorrelationIDヘッダーフィールドを使用して、あるメッセージを別のメッセージにリンクできます。一般的な使用箇所は、レスポンスメッセージをそのリクエストメッセージにリンクすることです。JMSCorrelationIDは、次のいずれかを保持できます。- プロバイダー固有のメッセージ ID
- アプリケーション固有の
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- 参照されているメッセージのメッセージ ID- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーが相関 ID の設定に失敗した場合。- 関連事項:
getJMSCorrelationID
StringSE getJMSCorrelationID()このJMSProducerに設定されているJMSCorrelationIDヘッダー値をStringとして返します。このメソッドは、プロバイダー固有のメッセージ ID またはアプリケーション固有の
String値のいずれかである相関 ID 値を返すために使用されます。- 戻り値:
Stringとしてのメッセージの相関 ID- 例外:
JMSRuntimeException- Jakarta Messaging プロバイダーが何らかの内部エラーのために相関 ID を取得できない場合。- 関連事項:
setJMSType
このJMSProducerを使用して送信されるメッセージのJMSTypeヘッダー値が指定されたメッセージ型に設定されることを指定します。これにより、送信されるメッセージにすでに設定されている
JMSTypeヘッダー値が上書きされます。一部の Jakarta Messaging プロバイダーは、アプリケーションによって送信されるメッセージの定義を含むメッセージリポジトリを使用します。
JMSTypeヘッダーフィールドは、プロバイダーのリポジトリ内のメッセージの定義を参照する場合があります。Jakarta Messaging API は、標準のメッセージ定義リポジトリを定義しておらず、それに含まれる定義の命名ポリシーも定義していません。
一部のメッセージングシステムでは、各アプリケーションメッセージのメッセージ型定義を作成し、各メッセージでその型を指定する必要があります。このような Jakarta Messaging プロバイダーと連携するには、アプリケーションが
JMSTypeを使用するかどうかに関係なく、Jakarta Messaging クライアントはJMSTypeに値を割り当てる必要があります。これにより、フィールドを必要とするプロバイダーに対してフィールドが適切に設定されます。移植性を確保するために、Jakarta Messaging クライアントは、インストール時に現在のプロバイダーのメッセージリポジトリで定義されている値に構成できる
JMSTypeのシンボリック値を使用する必要があります。文字列リテラルが使用されている場合、一部の Jakarta Messaging プロバイダーでは有効な型名ではない可能性があります。- パラメーター:
type- メッセージ型- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージ型の設定に失敗した場合。- 関連事項:
getJMSType
StringSE getJMSType()このJMSProducerに設定されているJMSTypeヘッダー値を返します。- 戻り値:
- メッセージ型
- 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ型の取得に失敗した場合。- 関連事項:
setJMSReplyTo
このJMSProducerを使用して送信されるメッセージのJMSReplyToヘッダー値が指定されたDestinationオブジェクトに設定されることを指定します。これにより、送信されるメッセージにすでに設定されている
JMSReplyToヘッダー値が上書きされます。JMSReplyToヘッダーフィールドには、現在のメッセージへの応答を送信する宛先が含まれています。null の場合、応答は期待されません。宛先は、QueueオブジェクトまたはTopicオブジェクトのいずれかです。null
JMSReplyTo値で送信されたメッセージは、何らかのイベントの通知である場合もあれば、送信者が関心があると考えるデータである場合もあります。JMSReplyTo値を持つメッセージは、通常、レスポンスを期待します。レスポンスはオプションです。決定するのはクライアント次第です。これらのメッセージはリクエストと呼ばれます。リクエストにレスポンスして送信されるメッセージは、レスポンスと呼ばれます。場合によっては、クライアントは、以前に送信したリクエストを、受信したばかりの応答と一致させたい場合があります。クライアントは、この目的で
JMSCorrelationIDヘッダーフィールドを使用できます。- パラメーター:
replyTo- このメッセージへのレスポンスの送信先となるDestination- 戻り値:
- この
JMSProducer - 例外:
JMSRuntimeException- 内部エラーのために Jakarta Messaging プロバイダーがJMSReplyTo宛先の設定に失敗した場合。- 関連事項:
getJMSReplyTo
Destination getJMSReplyTo()このJMSProducerに設定されているJMSReplyToヘッダー値を返します。- 戻り値:
DestinationJMSReplyToヘッダー値- 例外:
JMSRuntimeException- 内部エラーが原因で Jakarta Messaging プロバイダーがJMSReplyTo宛先の取得に失敗した場合。- 関連事項: