public class WmqMessagingProvider extends java.lang.Object implements MessagingProvider, Initializable
MessagingProviderの実装クラス。| コンストラクタと説明 |
|---|
WmqMessagingProvider() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
protected void |
backout(com.ibm.mq.MQQueueManager mqQueueManager)
分散トランザクションをバックアウトする。
|
protected void |
begin(com.ibm.mq.MQQueueManager mqQueueManager)
分散トランザクションを開始する。
|
protected void |
checkPoisonSetting()
退避キューの設定不備がないことをチェックする。
|
protected void |
checkXa()
分散トランザクションを使用するに設定されていることをチェックする。
|
protected void |
close(java.util.Map<java.lang.String,com.ibm.mq.MQQueue> mqQueues)
指定された全ての
MQQueueをクローズする。 |
protected void |
close(com.ibm.mq.MQQueue mqQueue)
指定された
MQQueueをクローズする。 |
protected void |
commit(com.ibm.mq.MQQueueManager mqQueueManager)
分散トランザクションをコミットする。
|
MessagingContext |
createContext()
WmqMessagingContextを生成する。 |
protected com.ibm.mq.MQQueueManager |
createMQQueueManager()
キューマネージャ名称を指定して
MQQueueManagerを生成する。 |
protected void |
disconnect(com.ibm.mq.MQQueueManager mqQueueManager)
MQQueueManagerの接続を切断する。 |
protected com.ibm.mq.MQGetMessageOptions |
getGetMessageOptions(java.lang.String messageId,
long timeout)
MQQueueからのメッセージ読み取りを制御するオプションを取得する。 |
protected int |
getGetSyncpointOption()
メッセージ読み取り時に使用する同期点オプションを取得する。
|
protected java.sql.Connection |
getJdbcConnection(com.ibm.mq.MQQueueManager mqQueueManager,
javax.sql.XADataSource xaDataSource)
MQQueueManagerからConnectionを取得する。 |
protected ReceivedMessage |
getMessage(com.ibm.mq.MQQueue receivedMqQueue,
java.lang.String messageId,
long timeout,
com.ibm.mq.MQQueue poisonMqQueue)
指定された
MQQueueから受信メッセージを読み込む。 |
protected com.ibm.mq.MQQueue |
getMQQueue(com.ibm.mq.MQQueueManager mqQueueManager,
java.lang.String queueName,
int openOptions)
指定されたキュー名とオプションを使用して、正常にオープンされた
MQQueueを取得する。 |
protected java.util.Map<java.lang.String,com.ibm.mq.MQQueue> |
getMQQueues(com.ibm.mq.MQQueueManager mqQueueManager,
java.util.Collection<java.lang.String> queueNames,
int openOptions)
指定されたキュー名とオプションを使用して、正常にオープンされた
MQQueueを取得する。 |
protected int |
getPoisonQueueOpenOptions()
ポイズンメッセージの退避先
MQQueueのオープンを制御するオプションを取得する。 |
protected com.ibm.mq.MQPutMessageOptions |
getPutMessageOptions()
MQQueueへのメッセージ書き込みを制御するオプションを取得する。 |
protected com.ibm.mq.MQPutMessageOptions |
getPutPoisonMessageOptions()
MQQueueへのポイズンメッセージ書き込みを制御するオプションを取得する。 |
protected int |
getPutSyncpointOption()
メッセージ書き込み時に使用する同期点オプションを取得する。
|
protected int |
getReceivedQueueOpenOptions()
受信先
MQQueueのオープンを制御するオプションを取得する。 |
protected int |
getSendingQueueOpenOptions()
送信先
MQQueueのオープンを制御するオプションを取得する。 |
void |
initialize()
WebSphere MQの初期化処理を行う。
|
protected boolean |
isPoisonMessage(com.ibm.mq.MQMessage mqMessage)
指定された
MQMessageがポイズンメッセージであるか否かを判定する。 |
protected void |
processPoisonMessage(com.ibm.mq.MQQueue poisonMqQueue,
com.ibm.mq.MQMessage mqMessage)
ポイズンメッセージの処理を行う。
|
protected java.lang.String |
putMessage(com.ibm.mq.MQQueue mqQueue,
SendingMessage sendingMessage)
送信メッセージを指定された
MQQueueに書き込む。 |
WmqMessagingProvider |
setBackoutLimit(int backoutLimit)
バックアウト回数の上限値を設定する。
|
WmqMessagingProvider |
setBackoutLimitExceededExitCode(int backoutLimitExceededExitCode)
バックアウト上限を超えた場合に使用する終了コード(プロセスを終了(
System.exit(int))する際に設定する値)を設定する。 |
WmqMessagingProvider |
setBackoutLimitExceededFailureCode(java.lang.String backoutLimitExceededFailureCode)
バックアウト上限を超えた場合に使用する障害コードを設定する。
|
MessagingProvider |
setDefaultResponseTimeout(long defaultResponseTimeout)
デフォルトタイムアウト値(単位:msec)を設定する。
|
MessagingProvider |
setDefaultTimeToLive(long defaultTimeToLive)
送信電文の有効期間(単位:msec)を設定する。
|
WmqMessagingProvider |
setMessagingExceptionFactory(MessagingExceptionFactory messagingExceptionFactory)
MessagingExceptionファクトリオブジェクトを設定する。 |
WmqMessagingProvider |
setMqmdFieldsOperator(WmqMqmdFieldsOperator mqmdFieldsOperator)
WmqMqmdFieldsOperatorオブジェクトを設定する。 |
void |
setPoisonQueueName(java.lang.String poisonQueueName)
退避キュー名(論理名)を設定する。
|
void |
setPoisonQueueNamePattern(java.lang.String poisonQueueNamePattern)
退避キュー名パターン(論理名)を設定する。
|
void |
setPutPoisonFailedExitCode(int putPoisonFailedExitCode)
ポイズンメッセージの送信に失敗した場合に使用する終了コード(プロセスを終了(
System.exit(int))する際に設定する値)を設定する。 |
void |
setPutPoisonFailedFailureCode(java.lang.String putPoisonFailedFailureCode)
ポイズンメッセージの送信に失敗した場合に使用する障害コードを設定する。
|
WmqMessagingProvider |
setQueueManagerName(java.lang.String queueManagerName)
キューマネージャ名称を設定する。
|
WmqMessagingProvider |
setReceivedQueueName(java.lang.String receivedQueueName)
受信キュー名(論理名)を設定する。
|
WmqMessagingProvider |
setSendingQueueNames(java.util.List<java.lang.String> sendingQueueNames)
送信キュー名(論理名)リストを設定する。
|
void |
setUseProductSystemErrorOutput(boolean useProductSystemErrorOutput)
WebSphere MQによる
MQException発生時の標準エラー出力を使用するか否かを設定する。 |
void |
setUseXa(boolean useXa)
分散トランザクションを使用するか否かを設定する。
|
public void initialize()
checkPoisonSetting()メソッドを呼び出し退避キューの設定不備がないことをチェックする。CMQC.TRANSPORT_PROPERTY)をバインディングモードに設定する。CMQC.THREAD_AFFINITY_PROPERTY)にuseXaプロパティの値を設定する。useProductSystemErrorOutputプロパティがfalseの場合はWebSphere MQによる標準エラー出力を無効化する。CMQC.TRANSPORT_PROPERTY)をバインディングモードに設定する。poisonQueueNamePatternが指定された場合はreceivedQueueNameを使用してフォーマットした退避キュー名を設定する。initialize インタフェース内 Initializableprotected void checkPoisonSetting()
receivedQueueNameが指定されない場合は、
poisonQueueNamePatternとpoisonQueueNameも指定されないこと。
receivedQueueNameが指定された場合は、
poisonQueueNamePatternとpoisonQueueNameの両方が指定されないか、
いずれか一方のみ指定されること。
public MessagingContext createContext()
WmqMessagingContextを生成する。
指定された設定情報からMQQueueManagerを生成し、MQQueueマップ(送信先と受信先とポイズンメッセージ送信先)の初期化を行う。MQQueueManagerの生成はcreateMQQueueManager()メソッドに委譲する。 送信先MQQueueマップの初期化はgetMQQueues(MQQueueManager, Collection, int)メソッド、 受信先MQQueueとポイズンメッセージ送信先MQQueueの初期化はgetPoisonQueueOpenOptions()メソッドに委譲する。 送信先MQQueueのオープンを制御するオプションはgetSendingQueueOpenOptions()メソッド、 受信先MQQueueのオープンを制御するオプションはgetReceivedQueueOpenOptions()メソッド、 ポイズンメッセージ送信先MQQueueのオープンを制御するオプションはgetPoisonQueueOpenOptions()メソッド、 から取得する。 MQExceptionを捕捉した場合は、MessagingExceptionFactory.createMessagingException(String, Throwable)メソッド に例外処理を委譲する。
createContext インタフェース内 MessagingProviderWmqMessagingContextprotected com.ibm.mq.MQQueueManager createMQQueueManager()
throws com.ibm.mq.MQException
MQQueueManagerを生成する。MQQueueManagercom.ibm.mq.MQException - MQQueueManagerの生成に失敗した場合protected int getSendingQueueOpenOptions()
MQQueueのオープンを制御するオプションを取得する。
下記オプションを指定した値を返す。
CMQC.MQOO_OUTPUTCMQC.MQOO_FAIL_IF_QUIESCINGMQQueueのオープンを制御するオプションprotected int getReceivedQueueOpenOptions()
MQQueueのオープンを制御するオプションを取得する。
下記オプションを指定した値を返す。
CMQC.MQOO_INPUT_SHAREDCMQC.MQOO_FAIL_IF_QUIESCINGMQQueueのオープンを制御するオプションprotected int getPoisonQueueOpenOptions()
MQQueueのオープンを制御するオプションを取得する。
getSendingQueueOpenOptions()メソッドに処理を委譲する。MQQueueのオープンを制御するオプションprotected java.util.Map<java.lang.String,com.ibm.mq.MQQueue> getMQQueues(com.ibm.mq.MQQueueManager mqQueueManager,
java.util.Collection<java.lang.String> queueNames,
int openOptions)
throws com.ibm.mq.MQException
MQQueueを取得する。mqQueueManager - MQQueueManagerqueueNames - キュー名リストopenOptions - MQQueueのオープンを制御するオプションMQQueueマップ(キーはキュー名)com.ibm.mq.MQException - MQQueueのオープンに失敗した場合protected com.ibm.mq.MQQueue getMQQueue(com.ibm.mq.MQQueueManager mqQueueManager,
java.lang.String queueName,
int openOptions)
throws com.ibm.mq.MQException
MQQueueを取得する。mqQueueManager - MQQueueManagerqueueName - キュー名openOptions - MQQueueのオープンを制御するオプションMQQueue。キュー名の指定がない場合はnullcom.ibm.mq.MQException - MQQueueのオープンに失敗した場合protected java.lang.String putMessage(com.ibm.mq.MQQueue mqQueue,
SendingMessage sendingMessage)
MQQueueに書き込む。
送信メッセージからMQMessageを作成しMQQueueに書き込む。
WmqMqmdFieldsOperator.setFieldsBeforeSend(SendingMessage, MQMessage, long)メソッドに委譲する。
MQQueueへの書き込みを制御するオプションはgetGetMessageOptions(String, long)メソッドから取得する。
WmqMqmdFieldsOperator.getFieldsAfterSend(MQMessage, SendingMessage)メソッドに委譲する。
MQExceptionを捕捉した場合は、
MessagingExceptionFactory.createMessagingException(String, Throwable)メソッドに例外処理を委譲する。mqQueue - MQQueuesendingMessage - 送信メッセージprotected com.ibm.mq.MQPutMessageOptions getPutMessageOptions()
MQQueueへのメッセージ書き込みを制御するオプションを取得する。
下記オプションを指定した値を返す。
getPutSyncpointOption()メソッドが返す同期点オプションCMQC.MQPMO_NEW_MSG_IDMQQueueへのメッセージ書き込みを制御するオプションprotected com.ibm.mq.MQPutMessageOptions getPutPoisonMessageOptions()
MQQueueへのポイズンメッセージ書き込みを制御するオプションを取得する。
getPutMessageOptions()に処理を委譲する。MQQueueへのメッセージ書き込みを制御するオプションprotected int getPutSyncpointOption()
useXaプロパティがtrueの場合はCMQC.MQPMO_SYNCPOINT、
falseの場合はCMQC.MQPMO_NO_SYNCPOINTを返す。protected ReceivedMessage getMessage(com.ibm.mq.MQQueue receivedMqQueue, java.lang.String messageId, long timeout, com.ibm.mq.MQQueue poisonMqQueue)
MQQueueから受信メッセージを読み込む。
MQQueueから読み込んだMQMessageから受信メッセージを作成する。
MQMessageがポイズンメッセージの場合は
processPoisonMessage(MQQueue, MQMessage)メソッドに処理を委譲する。
MQMessageがポイズンメッセージであるか否かの判定は
isPoisonMessage(MQMessage)メソッドが行う。
メッセージ受信前のMQMDフィールドの設定は
WmqMqmdFieldsOperator.setFieldsBeforeReceive(String, MQMessage)メソッドに委譲する。
MQQueueへの書き込みを制御するオプションはgetGetMessageOptions(String, long)メソッドから取得する。
WmqMqmdFieldsOperator.getFieldsAfterReceive(MQMessage, ReceivedMessage)メソッドに委譲する。
MQExceptionが送出され、理由コードがCMQC.MQRC_NO_MSG_AVAILABLEの場合はnullを返す。
MQExceptionを捕捉した場合は、
MessagingExceptionFactory.createMessagingException(String, Throwable)メソッド
に例外処理を委譲する。receivedMqQueue - MQQueuemessageId - 相関IDに指定するメッセージIDtimeout - タイムアウト値(単位:msec)poisonMqQueue - ポイズンメッセージ送信先MQQueue。指定がない場合はnullprotected boolean isPoisonMessage(com.ibm.mq.MQMessage mqMessage)
mqMessage - MQMessageprotected void processPoisonMessage(com.ibm.mq.MQQueue poisonMqQueue,
com.ibm.mq.MQMessage mqMessage)
throws ProcessAbnormalEnd,
MessagingException
ポイズンメッセージ送信先MQQueueの指定有無により処理が分かれる。 ポイズンメッセージ送信先MQQueueの指定がない場合 メッセージ受信処理が無限ループになるのを防止するために、ProcessAbnormalEndを送出しプロセスを異常終了させる。ProcessAbnormalEndの終了コードと障害コードには、backoutLimitExceededExitCodeプロパティとbackoutLimitExceededFailureCodeプロパティを指定する。 ポイズンメッセージ送信先MQQueueが指定された場合 FATALレベルで障害ログを出力し、指定されたMQQueueにポイズンメッセージを送信する。 送信時は、メッセージ存続時間を無制限、元々設定されていたメッセージIDを相関IDに設定する。 ポイズンメッセージの送信でMQExceptionが送出された場合は、 送出されたMQExceptionがリトライ可能な例外である場合は再送出し、 リトライ不可の場合は、メッセージ受信処理が無限ループになるのを防止するために、ProcessAbnormalEndを送出しプロセスを異常終了させる。ProcessAbnormalEndの終了コードと障害コードには、backoutLimitExceededExitCodeプロパティとbackoutLimitExceededFailureCodeプロパティを指定する。
poisonMqQueue - ポイズンメッセージ送信先MQQueue。指定がない場合はnullmqMessage - ポイズンメッセージProcessAbnormalEnd - ポイズンメッセージ送信先MQQueueの指定がない場合。
ポイズンメッセージの送信に失敗し、かつリトライ不可な場合MessagingException - ポイズンメッセージの送信に失敗し、かつリトライ可能な場合protected com.ibm.mq.MQGetMessageOptions getGetMessageOptions(java.lang.String messageId,
long timeout)
MQQueueからのメッセージ読み取りを制御するオプションを取得する。
下記オプションを指定した値を返す。
getGetSyncpointOption()メソッドが返す同期点オプションCMQC.MQPMO_NEW_MSG_IDCMQC.MQGMO_WAITCMQC.MQMO_MATCH_CORREL_ID、
指定がない場合はCMQC.MQMO_NONE
defaultResponseTimeoutプロパティの値を使用する。
messageId - 相関IDに指定するメッセージIDtimeout - タイムアウト値(単位:msec)MQQueueからのメッセージ読み取りを制御するオプションprotected int getGetSyncpointOption()
useXaプロパティがtrueの場合はCMQC.MQPMO_SYNCPOINT、
falseの場合はCMQC.MQPMO_NO_SYNCPOINTを返す。protected void disconnect(com.ibm.mq.MQQueueManager mqQueueManager)
MQQueueManagerの接続を切断する。
MQExceptionが送出された場合はTRACEレベルのログを出力し、MQExceptionを送出しない。mqQueueManager - MQQueueManagerprotected void close(java.util.Map<java.lang.String,com.ibm.mq.MQQueue> mqQueues)
mqQueues - MQQueueマップprotected void close(com.ibm.mq.MQQueue mqQueue)
MQQueueをクローズする。
MQExceptionが送出された場合はTRACEレベルのログを出力し、MQExceptionを送出しない。
mqQueue - MQQueueprotected java.sql.Connection getJdbcConnection(com.ibm.mq.MQQueueManager mqQueueManager,
javax.sql.XADataSource xaDataSource)
throws java.sql.SQLException,
javax.transaction.xa.XAException
MQQueueManagerからConnectionを取得する。
MQExceptionを捕捉した場合は、
MessagingExceptionFactory.createMessagingException(String, Throwable)メソッド
に例外処理を委譲する。mqQueueManager - MQQueueManagerxaDataSource - XAデータソースConnectionjava.sql.SQLException - Connectionの取得に失敗した場合javax.transaction.xa.XAException - Connectionの取得に失敗した場合protected void checkXa()
useXaプロパティがfalseの場合はIllegalStateExceptionを送出する。protected void begin(com.ibm.mq.MQQueueManager mqQueueManager)
MessagingExceptionFactory.createMessagingException(String, Throwable)メソッド
に例外処理を委譲する。mqQueueManager - MQQueueManagerprotected void commit(com.ibm.mq.MQQueueManager mqQueueManager)
MessagingExceptionFactory.createMessagingException(String, Throwable)メソッド
に例外処理を委譲する。mqQueueManager - MQQueueManagerprotected void backout(com.ibm.mq.MQQueueManager mqQueueManager)
MessagingExceptionFactory.createMessagingException(String, Throwable)メソッド
に例外処理を委譲する。mqQueueManager - MQQueueManagerpublic WmqMessagingProvider setQueueManagerName(java.lang.String queueManagerName)
queueManagerName - キューマネージャ名称public WmqMessagingProvider setSendingQueueNames(java.util.List<java.lang.String> sendingQueueNames)
sendingQueueNames - 送信キュー名(論理名)リストpublic WmqMessagingProvider setReceivedQueueName(java.lang.String receivedQueueName)
receivedQueueName - 受信キュー名(論理名)public void setPoisonQueueNamePattern(java.lang.String poisonQueueNamePattern)
受信先キュー名を使用した命名規約により退避キュー名が規定されている場合は、
本プロパティを指定する。
本プロパティの設定例を示す。
設定値: "%s.POISON"
受信先キュー名が"TEST"の場合は、"TEST.POISON"となる。
poisonQueueNamePattern - 退避キュー名パターン(論理名)public void setPoisonQueueName(java.lang.String poisonQueueName)
退避キュー名が受信先キュー名と命名規約により規定されていない場合は、 本プロパティを指定する。
poisonQueueName - 退避キュー名(論理名)public WmqMessagingProvider setBackoutLimit(int backoutLimit)
backoutLimit - バックアウト回数の上限値public WmqMessagingProvider setBackoutLimitExceededExitCode(int backoutLimitExceededExitCode)
System.exit(int))する際に設定する値)を設定する。
デフォルトは190。backoutLimitExceededExitCode - バックアウト上限を超えた場合に使用する終了コード(プロセスを終了(System.exit(int))する際に設定する値)public WmqMessagingProvider setBackoutLimitExceededFailureCode(java.lang.String backoutLimitExceededFailureCode)
backoutLimitExceededFailureCode - バックアウト上限を超えた場合に使用する障害コードpublic void setPutPoisonFailedExitCode(int putPoisonFailedExitCode)
System.exit(int))する際に設定する値)を設定する。
デフォルトは191。putPoisonFailedExitCode - ポイズンメッセージの送信に失敗した場合に使用する終了コード(プロセスを終了(System.exit(int))する際に設定する値)public void setPutPoisonFailedFailureCode(java.lang.String putPoisonFailedFailureCode)
putPoisonFailedFailureCode - ポイズンメッセージの送信に失敗した場合に使用する障害コードpublic MessagingProvider setDefaultResponseTimeout(long defaultResponseTimeout)
setDefaultResponseTimeout インタフェース内 MessagingProviderdefaultResponseTimeout - デフォルトタイムアウト値(単位:msec)public MessagingProvider setDefaultTimeToLive(long defaultTimeToLive)
setDefaultTimeToLive インタフェース内 MessagingProviderdefaultTimeToLive - 送信電文の有効期間(単位:msec)public WmqMessagingProvider setMqmdFieldsOperator(WmqMqmdFieldsOperator mqmdFieldsOperator)
WmqMqmdFieldsOperatorオブジェクトを設定する。
デフォルトはBasicWmqMqmdFieldsOperator。mqmdFieldsOperator - WmqMqmdFieldsOperatorオブジェクトpublic WmqMessagingProvider setMessagingExceptionFactory(MessagingExceptionFactory messagingExceptionFactory)
MessagingExceptionファクトリオブジェクトを設定する。
デフォルトはBasicWmqMessagingExceptionFactory。setMessagingExceptionFactory インタフェース内 MessagingProvidermessagingExceptionFactory - MessagingExceptionファクトリオブジェクトpublic void setUseXa(boolean useXa)
useXa - 分散トランザクションを使用する場合はtruepublic void setUseProductSystemErrorOutput(boolean useProductSystemErrorOutput)
MQException発生時の標準エラー出力を使用するか否かを設定する。
デフォルトはfalse。useProductSystemErrorOutput - WebSphere MQによるMQException発生時の標準エラー出力を使用する場合はtrue