JMSメッセージのヘッダとプロパティ

JMSメッセージとTP1/Message Queueのメッセージとの対応

MQCクライアント機能のJMSインタフェースで作成したメッセージ(JMSメッセージ)と,TP1/Message Queueのメッセージとの対応を次の図に示します。

図7-3 JMSメッセージとTP1/Message Queueのメッセージとの対応

[図データ]

JMSメッセージは,ヘッダ,プロパティ,およびメッセージ本体で構成されています。

一般的なJMSメッセージのヘッダは,クライアントとプロバイダの双方がメッセージを識別・送信するための値を含みます。プロパティは,アプリケーション固有の値を格納するためのフィールドを定義する組み込み機能を提供します。

TP1/Message Queue - Accessでは,図7-3に示すとおり,JMSメッセージのヘッダとプロパティがMQMD構造体に対応づけられてキューに格納されます。また,プロパティは,MQMD構造体の各フィールドに値を設定・取得するために使用されます。アプリケーション固有のプロパティ値はTP1/Message Queueのキューには格納されません。

JMSヘッダと対応するMQMD構造体のフィールド,およびJMSプロパティと対応するMQMD構造体のフィールドを次の表に示します。設定者が「クライアント」以外のヘッダは指定できません。

表7-5 JMSヘッダと対応するMQMD構造体のフィールド

ヘッダ対応するMQMD構造体のフィールド設定者備考
JMSDestinationDestination送信時プロバイダ送信時に設定しても無視されます。
JMSMessageIDStringMsgId送信時プロバイダ送信時に設定しても無視されます。
JMSTimestamplongPutDate,PutTime送信時プロバイダ送信時に設定しても無視されます。
JMSRedeliveredbooleanBackoutCount受信時プロバイダ送信時に設定しても無視されます。
JMSCorrelationIDString※1CorrelIdクライアント(Message)
JMSReplyToDestinationReplyToQ,ReplyToQMgrクライアント(Message)
JMSTypeStringクライアント(Message)TP1/Message Queueでは使用されません。
JMSDeliveryModeintPersistenceクライアント(QueueSender)
JMSExpirationlongExpiryクライアント(QueueSender)
JMSPriorityintPriorityクライアント(QueueSender)

表7-6 JMSプロパティと対応するMQMD構造体のフィールド

プロパティ対応するMQMD構造体のフィールド設定者備考
JMSXAppIDStringPutApplName送信時プロバイダ送信時に設定しても無視されます。
JMSXUserIDStringUserIdentifier送信時プロバイダ送信時に設定しても無視されます。
JMSXDeliveryCountintBackoutCount受信時プロバイダ送信時に設定しても無視されます。
JMSXGroupID※1String※2GroupIdクライアント(Message)
JMSXGroupSeqintMsgSeqNumberクライアント(Message)
JMS_HITACHI_PutApplTypeintPutApplType送信時プロバイダ送信時に設定しても無視されます。
JMS_HITACHI_CodedCharSetIdintCodedCharSetIdクライアント(Message)
JMS_HITACHI_EncodingintEncodingクライアント(Message)
JMS_HITACHI_FeedbackintFeedbackクライアント(Message)
JMS_HITACHI_MsgTypeintMsgTypeクライアント(Message)
JMS_HITACHI_ReportintReportクライアント(Message)
JMS_HITACHI_FormatString※3Formatクライアント(Message)
JMS_HITACHI_MQMF_LAST_MSG_IN_GROUP※1booleanMsgFlagsクライアント(Message)
(凡例)
-:該当しません。
注※1
プロパティJMSXGroupIDの文字列が有効かどうか,またプロパティJMS_HITACHI_MQMF_LAST_MSG_IN_GROUPの値によって,MQMD構造体のMsgFlagsフィールドに次の値が代入されます。
JMSXGroupIDの文字列JMS_HITACHI_MQMF_LAST_MSG_IN_GROUPの値
falsetrue
無効MQMF_NONE
有効MQMF_MSG_IN_GROUPMQMF_LAST_MSG_IN_GROUP
注※2
String型から長さ24バイトのbyte型配列(TP1/Message QueueのMQBYTE24型)に変換された結果,24バイトを超える部分は切り捨てられます。
文字列の先頭が「ID:」ではない場合,UTF-8ストリングとしてエンコードされます。さらに,メッセージの送信を契機に,ヘッダとプロパティに格納された文字列は,先頭が「ID:」で以降が48けたの16進数の文字列に置き換えられます。
文字列の先頭が「ID:」の場合,「ID:+16進数」と解釈されて16進数がMQBYTE24型に変換されます。この場合,16進数の部分が48けたに満たないときは,不足部分は48けたまで「0」を補われてMQBYTE24型に変換されます。また,16進数の部分が48けたを超えるときは,超える部分は切り捨てられます。
次に示す1.~4.の文字列にあてはまる場合は無効な文字列と見なされ,対応するMQMD構造体のフィールドにはMQCI_NONEまたはMQGI_NONEが格納されます。
  1. nullの場合
  2. 先頭が「ID:」で,後続の文字がない場合
  3. 先頭が「ID:」で,後続の文字は48文字目まですべて「0」の場合
  4. 先頭が「ID:」で,後続の文字が16進数として解釈できない場合
注※3
String型から長さ8バイトのchar型配列(TP1/Message QueueのMQCHAR8型)に変換(UTF-8から7ビットASCIIに変換)された結果,8バイトを超える部分は切り捨てられます。

JMSプロパティ読み込み時の型変換

JMSプロパティに設定できる型は,boolean,byte,short,int,long,float,double,およびStringです。書き込まれたときとは異なる型でJMSプロパティを読み込む場合,次の表に示すように型が変換されます。

表7-7 JMSプロパティの型変換

プロパティの型読み込むときの型
booleanbyteshortintlongfloatdoubleString
書き込まれたときの型boolean      
byte   
short    
int     
long      
float     
double      
String
(凡例)
○:型が変換されます。
空白:型が変換されません。この場合,読み込み時に例外がスローされます。
注※
String型で書き込まれた文字列が変換される場合,書き込まれた文字列が変換後の型のラッパークラスのvalueOfメソッドによって解釈ができないときは,例外がスローされる場合があります。