Class WmqMessagingContext
java.lang.Object
nablarch.fw.messaging.MessagingContext
nablarch.integration.messaging.wmq.provider.WmqMessagingContext
- All Implemented Interfaces:
Closeable,AutoCloseable
IBM MQを使用した
MessagingContextの実装クラス。-
Constructor Summary
ConstructorsConstructorDescriptionWmqMessagingContext(WmqMessagingProvider provider, com.ibm.mq.MQQueueManager mqQueueManager, Map<String, com.ibm.mq.MQQueue> sendingMqQueues, com.ibm.mq.MQQueue receivedMqQueue, com.ibm.mq.MQQueue poisonMqQueue) コンストラクタ。 -
Method Summary
Modifier and TypeMethodDescriptionvoidbackout()分散トランザクションをバックアウトする。voidbegin()分散トランザクションを開始する。protected voidcheckReceivedQueueName(String receiveQueue) 指定された受信キュー名に対応するキューが登録されているか否かをチェックする。voidclose()現在のセッションを終了し、保持しているリソースを開放する。voidcommit()分散トランザクションをコミットする。static WmqMessagingContextカレントスレッドに紐づけられているWmqMessagingContextを取得する。getJdbcConnection(XADataSource xaDataSource) MQQueueManagerからConnectionを取得する。protected com.ibm.mq.MQQueuegetMQQueue(Map<String, com.ibm.mq.MQQueue> mqQueues, String queueName) MQQueueマップから指定されたキュー名のMQQueueを取得する。receiveMessage(String receiveQueue, String messageId, long timeout) 指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。sendMessage(SendingMessage sendingMessage) メッセージを送信する。Methods inherited from class nablarch.fw.messaging.MessagingContext
attach, detach, emitLog, receiveSync, receiveSync, receiveSync, send, sendSync, sendSync
-
Constructor Details
-
WmqMessagingContext
public WmqMessagingContext(WmqMessagingProvider provider, com.ibm.mq.MQQueueManager mqQueueManager, Map<String, com.ibm.mq.MQQueue> sendingMqQueues, com.ibm.mq.MQQueue receivedMqQueue, com.ibm.mq.MQQueue poisonMqQueue) コンストラクタ。- Parameters:
provider-WmqMessagingProvidermqQueueManager-MQQueueManagersendingMqQueues- 送信先MQQueueマップ(キーはキュー名)receivedMqQueue- 受信先MQQueuepoisonMqQueue- ポイズンメッセージ送信先MQQueue
-
-
Method Details
-
getInstance
カレントスレッドに紐づけられているWmqMessagingContextを取得する。- Returns:
- カレントスレッドに紐づけられている
WmqMessagingContext
-
sendMessage
メッセージを送信する。WmqMessagingProvider.putMessage(MQQueue, SendingMessage)メソッドに処理を委譲する。- Specified by:
sendMessagein classMessagingContext- Parameters:
sendingMessage- 送信メッセージ- Returns:
- 送信メッセージのメッセージID
-
receiveMessage
指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。WmqMessagingProvider.getMessage(MQQueue, String, long, MQQueue)メソッドに処理を委譲する。- Specified by:
receiveMessagein classMessagingContext- Parameters:
receiveQueue- 受信キューの論理名messageId- 送信電文のメッセージID (応答受信でない場合はnull)timeout- 応答タイムアウト (単位:ミリ秒、0以下の数値の場合はブロックし続ける)- Returns:
- 受信したメッセージ(タイムアウトした場合はnull)
-
checkReceivedQueueName
指定された受信キュー名に対応するキューが登録されているか否かをチェックする。- Parameters:
receiveQueue- 受信キュー名- Throws:
MessagingException- 指定されたキュー名に対するMQQueueが登録されていなかった場合
-
getMQQueue
protected com.ibm.mq.MQQueue getMQQueue(Map<String, com.ibm.mq.MQQueue> mqQueues, String queueName) throws MessagingExceptionMQQueueマップから指定されたキュー名のMQQueueを取得する。- Parameters:
mqQueues-MQQueueマップqueueName- キュー名- Returns:
MQQueue- Throws:
MessagingException- 指定されたキュー名に対するMQQueueが登録されていなかった場合
-
close
public void close()現在のセッションを終了し、保持しているリソースを開放する。WmqMessagingProvider.close(Map)メソッド、WmqMessagingProvider.close(MQQueue)メソッド、WmqMessagingProvider.disconnect(MQQueueManager)メソッド を順に呼び出し、処理を委譲する。- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein classMessagingContext
-
getJdbcConnection
MQQueueManagerからConnectionを取得する。WmqMessagingProvider.getJdbcConnection(MQQueueManager, XADataSource)メソッドに処理を委譲する。- Parameters:
xaDataSource- XAデータソース- Returns:
Connection- Throws:
SQLException-Connectionの取得に失敗した場合XAException-Connectionの取得に失敗した場合
-
begin
public void begin()分散トランザクションを開始する。WmqMessagingProvider.begin(MQQueueManager)メソッドに処理を委譲する。 -
commit
public void commit()分散トランザクションをコミットする。WmqMessagingProvider.commit(MQQueueManager)メソッドに処理を委譲する。 -
backout
public void backout()分散トランザクションをバックアウトする。WmqMessagingProvider.backout(MQQueueManager)メソッドに処理を委譲する。
-