Class BasicWmqMqmdFieldsOperator
java.lang.Object
nablarch.integration.messaging.wmq.provider.BasicWmqMqmdFieldsOperator
- All Implemented Interfaces:
WmqMqmdFieldsOperator
WmqMqmdFieldsOperator
の基本実装クラス。-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected byte[]
文字列で表現されたメッセージID(または相関ID)をバイト配列に変換する。protected String
convertIdToString
(byte[] id) バイト配列で表現されたメッセージID(または相関ID)を文字列に変換する。void
getFieldsAfterReceive
(com.ibm.mq.MQMessage mqMessage, ReceivedMessage receivedMessage) メッセージ受信後にMQMessage
のMQMDフィールドから値を取得する。void
getFieldsAfterSend
(com.ibm.mq.MQMessage mqMessage, SendingMessage sendingMessage) メッセージ送信後にMQMessage
のMQMDフィールドから値を取得する。protected <T> T
getHeaderValue
(Map<String, Object> headerMap, String headerName, T defaultValue) ヘッダマップから指定されたヘッダ名を使用して値を取得する。protected int
getMessageType
(SendingMessage sendingMessage) 送信メッセージから判定したメッセージタイプを取得する。setCharacterSetId
(Integer characterSetId) メッセージデータの文字セットID(MQMDフィールド)の値を設定する。void
setFieldsBeforeReceive
(String messageId, com.ibm.mq.MQMessage mqMessage) メッセージ受信前にMQMessage
のMQMDフィールドに値を設定する。void
setFieldsBeforeSend
(SendingMessage sendingMessage, com.ibm.mq.MQMessage mqMessage, long defaultTimeToLive) メッセージ送信前にMQMessage
のMQMDフィールドに値を設定する。setPersistence
(boolean persistence) メッセージの持続性(MQMDフィールド)の値を設定する。
-
Constructor Details
-
BasicWmqMqmdFieldsOperator
public BasicWmqMqmdFieldsOperator()
-
-
Method Details
-
setFieldsBeforeSend
public void setFieldsBeforeSend(SendingMessage sendingMessage, com.ibm.mq.MQMessage mqMessage, long defaultTimeToLive) throws com.ibm.mq.MQException メッセージ送信前にMQMessage
のMQMDフィールドに値を設定する。設定内容は下記のとおり。 構造体のバージョン番号
CMQC.MQMD_VERSION_2
メッセージデータの数値エンコードCMQC.MQENC_INTEGER_NORMAL
CMQC.MQENC_DECIMAL_NORMAL
CMQC.MQENC_FLOAT_IEEE_NORMAL
メッセージデータの形式名CMQC.MQFMT_NONE
グループ内での論理メッセージの順序番号 1 メッセージIDCMQC.MQMI_NONE
メッセージタイプgetMessageType(SendingMessage)
の戻り値 メッセージが書き込まれた日付SystemTimeUtil.getDate()
の戻り値 メッセージデータの文字セットIDcharacterSetId
プロパティの値 設定しない場合はCMQC.MQCCSI_Q_MGR
が使用される。 メッセージの持続性persistence
がtrueの場合はCMQC.MQPER_PERSISTENT
persistence
がfalseの場合はCMQC.MQPER_NOT_PERSISTENT
相関IDSendingMessage
のヘッダ(InterSystemMessage.HeaderName.CORRELATION_ID
)に指定された値 指定がない場合は設定しない。 応答先キューの名前SendingMessage
のヘッダ(InterSystemMessage.HeaderName.REPLY_TO
)に指定された値 指定がない場合は設定しない。 メッセージ存続時間SendingMessage
のヘッダ(InterSystemMessage.HeaderName.TIME_TO_LIVE
)に指定された値 指定がない場合はdefaultTimeToLive引数に指定された値 値が0以下の場合はCMQC.MQEI_UNLIMITED
- Specified by:
setFieldsBeforeSend
in interfaceWmqMqmdFieldsOperator
- Parameters:
sendingMessage
- 送信メッセージmqMessage
-MQMessage
defaultTimeToLive
- 送信電文の有効期間(単位:msec)- Throws:
com.ibm.mq.MQException
- MQMDフィールドに対して不正な操作が行われた場合
-
getMessageType
送信メッセージから判定したメッセージタイプを取得する。判定内容は下記のとおり。 送信メッセージが
ResponseMessage
である場合CMQC.MQMT_REPLY
を返す。 送信メッセージがResponseMessage
でなく、応答宛先キューが設定されている場合CMQC.MQMT_REQUEST
を返す。 送信メッセージがResponseMessage
でなく、応答宛先キューが設定されていない場合CMQC.MQMT_DATAGRAM
を返す。- Parameters:
sendingMessage
- 送信メッセージ- Returns:
- メッセージタイプ
-
getHeaderValue
ヘッダマップから指定されたヘッダ名を使用して値を取得する。 指定されたヘッダ名がヘッダマップに存在しない場合は指定されたデフォルト値を返す。- Type Parameters:
T
- 値の型- Parameters:
headerMap
- ヘッダマップ(キーはヘッダ名)headerName
- ヘッダ名defaultValue
- デフォルト値- Returns:
- ヘッダ名に対応する値
-
getFieldsAfterSend
public void getFieldsAfterSend(com.ibm.mq.MQMessage mqMessage, SendingMessage sendingMessage) throws com.ibm.mq.MQException メッセージ送信後にMQMessage
のMQMDフィールドから値を取得する。MQMessage
に設定されたメッセージIDをSendingMessage
のヘッダ(InterSystemMessage.HeaderName.MESSAGE_ID
)に設定する。- Specified by:
getFieldsAfterSend
in interfaceWmqMqmdFieldsOperator
- Parameters:
mqMessage
-MQMessage
sendingMessage
- 送信メッセージ- Throws:
com.ibm.mq.MQException
- MQMDフィールドに対して不正な操作が行われた場合
-
setFieldsBeforeReceive
public void setFieldsBeforeReceive(String messageId, com.ibm.mq.MQMessage mqMessage) throws com.ibm.mq.MQException メッセージ受信前にMQMessage
のMQMDフィールドに値を設定する。 メッセージIDが指定された場合は、MQMessage
の相関IDに指定されたメッセージIDを設定する。- Specified by:
setFieldsBeforeReceive
in interfaceWmqMqmdFieldsOperator
- Parameters:
messageId
- 相関IDに指定するメッセージIDmqMessage
-MQMessage
- Throws:
com.ibm.mq.MQException
- MQMDフィールドに対して不正な操作が行われた場合
-
getFieldsAfterReceive
public void getFieldsAfterReceive(com.ibm.mq.MQMessage mqMessage, ReceivedMessage receivedMessage) throws com.ibm.mq.MQException メッセージ受信後にMQMessage
のMQMDフィールドから値を取得する。設定内容は下記のとおり。 メッセージID
MQMessage
に設定されたメッセージIDをReceivedMessage
のヘッダ(InterSystemMessage.HeaderName.MESSAGE_ID
)に設定する。 相関IDMQMessage
に設定された相関IDをReceivedMessage
のヘッダ(InterSystemMessage.HeaderName.CORRELATION_ID
)に設定する。 指定がない場合は設定しない。 応答先キューの名前SendingMessage
のヘッダ(InterSystemMessage.HeaderName.REPLY_TO
)に指定された値 指定がない場合は設定しない。- Specified by:
getFieldsAfterReceive
in interfaceWmqMqmdFieldsOperator
- Parameters:
mqMessage
-MQMessage
receivedMessage
- 受信メッセージ- Throws:
com.ibm.mq.MQException
- MQMDフィールドに対して不正な操作が行われた場合
-
convertIdToString
バイト配列で表現されたメッセージID(または相関ID)を文字列に変換する。 メッセージID(または相関ID)の型がMQMessage
(バイト配列)とInterSystemMessage
(文字列)で異なるため、本メソッドにより変換を行う。 基本実装では、メッセージID(または相関ID)の文字列表現に16進数表記を使用する。- Parameters:
id
- バイト配列で表現されたメッセージID(または相関ID)- Returns:
- 変換後の文字列
-
convertIdToByte
文字列で表現されたメッセージID(または相関ID)をバイト配列に変換する。 メッセージID(または相関ID)の型がMQMessage
(バイト配列)とInterSystemMessage
(文字列)で異なるため、本メソッドにより変換を行う。 基本実装では、メッセージID(または相関ID)の文字列表現に16進数表記を使用する。- Parameters:
id
- 文字列で表現されたメッセージID(または相関ID)- Returns:
- 変換後のバイト配列
-
setCharacterSetId
メッセージデータの文字セットID(MQMDフィールド)の値を設定する。下記のいずれかの値を設定する。 850 commonly used ASCII codeset 819 the ISO standard ASCII codeset 37 the American EBCDIC codeset 1200 Unicode 1208 UTF-8 設定しない場合は
CMQC.MQCCSI_Q_MGR
が使用される。- Parameters:
characterSetId
- メッセージデータの文字セットID(MQMDフィールド)- Returns:
- このオブジェクト自体
-
setPersistence
メッセージの持続性(MQMDフィールド)の値を設定する。trueが指定された場合はMQMDフィールドに
CMQC.MQPER_PERSISTENT
を使用する。 falseが指定された場合はMQMDフィールドにCMQC.MQPER_NOT_PERSISTENT
を使用する。 デフォルトはtrue。- Parameters:
persistence
- MQMDフィールドにCMQC.MQPER_PERSISTENT
を使用する場合はtrue、CMQC.MQPER_NOT_PERSISTENT
を使用する場合はfalse- Returns:
- このオブジェクト自体
-