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
ConstructorDescriptionWmqMessagingContext
(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 TypeMethodDescriptionvoid
backout()
分散トランザクションをバックアウトする。void
begin()
分散トランザクションを開始する。protected void
checkReceivedQueueName
(String receiveQueue) 指定された受信キュー名に対応するキューが登録されているか否かをチェックする。void
close()
現在のセッションを終了し、保持しているリソースを開放する。void
commit()
分散トランザクションをコミットする。static WmqMessagingContext
カレントスレッドに紐づけられているWmqMessagingContext
を取得する。getJdbcConnection
(XADataSource xaDataSource) MQQueueManager
からConnection
を取得する。protected com.ibm.mq.MQQueue
getMQQueue
(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
-WmqMessagingProvider
mqQueueManager
-MQQueueManager
sendingMqQueues
- 送信先MQQueue
マップ(キーはキュー名)receivedMqQueue
- 受信先MQQueue
poisonMqQueue
- ポイズンメッセージ送信先MQQueue
-
-
Method Details
-
getInstance
カレントスレッドに紐づけられているWmqMessagingContext
を取得する。- Returns:
- カレントスレッドに紐づけられている
WmqMessagingContext
-
sendMessage
メッセージを送信する。WmqMessagingProvider.putMessage(MQQueue, SendingMessage)
メソッドに処理を委譲する。- Specified by:
sendMessage
in classMessagingContext
- Parameters:
sendingMessage
- 送信メッセージ- Returns:
- 送信メッセージのメッセージID
-
receiveMessage
指定した受信キュー上のメッセージを取得する。 messageIdが指定されている場合は、当該のメッセージに対する応答電文を 取得する。messageIdが指定されていないばあいは、受信キュー上の任意の電文 を取得する。 キュー上に取得対象のメッセージが存在しない場合、メッセージを受信するか、 指定した時間が経過する(タイムアウトする)までブロックする。 タイムアウトした場合はnullをかえす。 タイムアウト時間に0以下の数値を設定した場合は 応答電文を受信するまでブロックし続ける。WmqMessagingProvider.getMessage(MQQueue, String, long, MQQueue)
メソッドに処理を委譲する。- Specified by:
receiveMessage
in 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:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in 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)
メソッドに処理を委譲する。
-