Package nablarch.fw.messaging.provider
Class JmsMessagingProvider.Context
java.lang.Object
nablarch.fw.messaging.MessagingContext
nablarch.fw.messaging.provider.JmsMessagingProvider.Context
- All Implemented Interfaces:
Closeable,AutoCloseable
- Enclosing class:
- JmsMessagingProvider
メッセージングコンテキストのJMSベース実装
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classJMSヘッダー名称 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()現在のセッションを終了し、保持しているリソースを開放する。protected jakarta.jms.QueuegetPoisonQueueOf(String queueName) 指定されたJMSキューに対する退避キューを返す。 該当するキューが存在しない場合はMessagingExceptionを送出する。protected StringgetQueueNameOf(jakarta.jms.Destination queue) 指定されたJMSキューの論理名を逆引きする。 キューが登録されていない場合はnullを返す。protected jakarta.jms.QueuegetQueueOf(String queueName) 指定されたキュー名に対するJMSQueueインスタンスを返す。receiveMessage(String queueName, String messageId, long timeout) 指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。protected voidrejectIfExpiresRedeliverLimit(jakarta.jms.Message message, String queueName) MOMによるメッセージの受信リトライ回数が規定回数を越えていた場合は、 メッセージ退避キューに転送し、実行時例外を送出する。sendMessage(SendingMessage message) メッセージを送信する。Methods inherited from class nablarch.fw.messaging.MessagingContext
attach, detach, emitLog, getInstance, receiveSync, receiveSync, receiveSync, send, sendSync, sendSync
-
Constructor Details
-
Context
public Context(jakarta.jms.Connection conn, JmsMessagingProvider provider) throws jakarta.jms.JMSException コンストラクタ- Parameters:
conn- JMSセッションprovider- 各種設定- Throws:
jakarta.jms.JMSException- JMSプロバイダ側でエラーが発生した場合
-
-
Method Details
-
close
public void close()現在のセッションを終了し、保持しているリソースを開放する。 使用中のセッションを終了し、コネクションをプールに返却する。 この実装では、JMSコネクションファクトリがコネクションプールを内蔵する ことを前提としており、コネクションを単にclose()している。 キャッシュしているMessageProducerとMessageConsumerをクローズする。 MessageProducerとMessageConsumerのクローズ処理で例外が発生した場合、 TRACEレベルのログ出力を行い、例外の再スローは行わない。- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein classMessagingContext
-
sendMessage
メッセージを送信する。 この実装では、JMSの実装系を使用して送信処理を行う。- Specified by:
sendMessagein classMessagingContext- Parameters:
message- 送信メッセージ- Returns:
- 送信メッセージのメッセージID
-
receiveMessage
指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。 この実装では、JMSの実装系を使用して指定されたキュー上のメッセージの 同期受信を行う。- Specified by:
receiveMessagein classMessagingContext- Parameters:
queueName- 受信キューの論理名messageId- 送信電文のメッセージID (応答受信でない場合はnull)timeout- 応答タイムアウト (単位:ミリ秒、0以下の数値の場合はブロックし続ける)- Returns:
- 受信したメッセージ(タイムアウトした場合はnull)
-
getQueueOf
指定されたキュー名に対するJMSQueueインスタンスを返す。- Parameters:
queueName- 取得するキューの論理名- Returns:
- JMSQueueインスタンス
- Throws:
MessagingException- 指定されたキュー名に対するキューオブジェクトが登録されて いなかった場合。
-
getQueueNameOf
指定されたJMSキューの論理名を逆引きする。 キューが登録されていない場合はnullを返す。- Parameters:
queue- キューインスタンス- Returns:
- キューの論理名
-
getPoisonQueueOf
指定されたJMSキューに対する退避キューを返す。 該当するキューが存在しない場合はMessagingExceptionを送出する。- Parameters:
queueName- 受信キューの論理名- Returns:
- JMSQueueインスタンス
- Throws:
MessagingException- 退避キューが定義されていない場合。
-
rejectIfExpiresRedeliverLimit
protected void rejectIfExpiresRedeliverLimit(jakarta.jms.Message message, String queueName) throws MessagingException, jakarta.jms.JMSException MOMによるメッセージの受信リトライ回数が規定回数を越えていた場合は、 メッセージ退避キューに転送し、実行時例外を送出する。- Parameters:
message- 受信メッセージqueueName- 受信キューの論理名- Throws:
MessagingException- 受信リトライ回数が規定回数を越えていた場合jakarta.jms.JMSException- JMS API側で問題が発生した場合。
-