Class BasicWmqMqmdFieldsOperator

java.lang.Object
nablarch.integration.messaging.wmq.provider.BasicWmqMqmdFieldsOperator
All Implemented Interfaces:
WmqMqmdFieldsOperator

public class BasicWmqMqmdFieldsOperator extends Object implements WmqMqmdFieldsOperator
WmqMqmdFieldsOperatorの基本実装クラス。
  • 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
       メッセージID
           CMQC.MQMI_NONE
       メッセージタイプ
           getMessageType(SendingMessage)の戻り値
       メッセージが書き込まれた日付
           SystemTimeUtil.getDate()の戻り値
       メッセージデータの文字セットID
           characterSetIdプロパティの値
           設定しない場合はCMQC.MQCCSI_Q_MGRが使用される。
       メッセージの持続性
           persistenceがtrueの場合はCMQC.MQPER_PERSISTENT
           persistenceがfalseの場合はCMQC.MQPER_NOT_PERSISTENT
       相関ID
           SendingMessageのヘッダ(InterSystemMessage.HeaderName.CORRELATION_ID)に指定された値
           指定がない場合は設定しない。
       応答先キューの名前
           SendingMessageのヘッダ(InterSystemMessage.HeaderName.REPLY_TO)に指定された値
           指定がない場合は設定しない。
       メッセージ存続時間
           SendingMessageのヘッダ(InterSystemMessage.HeaderName.TIME_TO_LIVE)に指定された値
           指定がない場合はdefaultTimeToLive引数に指定された値
           値が0以下の場合はCMQC.MQEI_UNLIMITED
       
      Specified by:
      setFieldsBeforeSend in interface WmqMqmdFieldsOperator
      Parameters:
      sendingMessage - 送信メッセージ
      mqMessage - MQMessage
      defaultTimeToLive - 送信電文の有効期間(単位:msec)
      Throws:
      com.ibm.mq.MQException - MQMDフィールドに対して不正な操作が行われた場合
    • getMessageType

      protected int getMessageType(SendingMessage sendingMessage)
      送信メッセージから判定したメッセージタイプを取得する。
       判定内容は下記のとおり。
       
       送信メッセージがResponseMessageである場合
           CMQC.MQMT_REPLYを返す。
       送信メッセージがResponseMessageでなく、応答宛先キューが設定されている場合
           CMQC.MQMT_REQUESTを返す。
       送信メッセージがResponseMessageでなく、応答宛先キューが設定されていない場合
           CMQC.MQMT_DATAGRAMを返す。
       
      Parameters:
      sendingMessage - 送信メッセージ
      Returns:
      メッセージタイプ
    • getHeaderValue

      protected <T> T getHeaderValue(Map<String,Object> headerMap, String headerName, T defaultValue)
      ヘッダマップから指定されたヘッダ名を使用して値を取得する。

      指定されたヘッダ名がヘッダマップに存在しない場合は指定されたデフォルト値を返す。

      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 interface WmqMqmdFieldsOperator
      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 interface WmqMqmdFieldsOperator
      Parameters:
      messageId - 相関IDに指定するメッセージID
      mqMessage - 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)に設定する。
       相関ID
           MQMessageに設定された相関IDを
           ReceivedMessageのヘッダ(InterSystemMessage.HeaderName.CORRELATION_ID)に設定する。
           指定がない場合は設定しない。
       応答先キューの名前
           SendingMessageのヘッダ(InterSystemMessage.HeaderName.REPLY_TO)に指定された値
           指定がない場合は設定しない。
       
      Specified by:
      getFieldsAfterReceive in interface WmqMqmdFieldsOperator
      Parameters:
      mqMessage - MQMessage
      receivedMessage - 受信メッセージ
      Throws:
      com.ibm.mq.MQException - MQMDフィールドに対して不正な操作が行われた場合
    • convertIdToString

      protected String convertIdToString(byte[] id)
      バイト配列で表現されたメッセージID(または相関ID)を文字列に変換する。

      メッセージID(または相関ID)の型がMQMessage(バイト配列)と InterSystemMessage(文字列)で異なるため、本メソッドにより変換を行う。

      基本実装では、メッセージID(または相関ID)の文字列表現に16進数表記を使用する。

      Parameters:
      id - バイト配列で表現されたメッセージID(または相関ID)
      Returns:
      変換後の文字列
    • convertIdToByte

      protected byte[] convertIdToByte(String id)
      文字列で表現されたメッセージID(または相関ID)をバイト配列に変換する。

      メッセージID(または相関ID)の型がMQMessage(バイト配列)と InterSystemMessage(文字列)で異なるため、本メソッドにより変換を行う。

      基本実装では、メッセージID(または相関ID)の文字列表現に16進数表記を使用する。

      Parameters:
      id - 文字列で表現されたメッセージID(または相関ID)
      Returns:
      変換後のバイト配列
    • setCharacterSetId

      public BasicWmqMqmdFieldsOperator setCharacterSetId(Integer characterSetId)
      メッセージデータの文字セット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

      public BasicWmqMqmdFieldsOperator setPersistence(boolean persistence)
      メッセージの持続性(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:
      このオブジェクト自体