メッセージキューイングアクセス機能 TP1/Message Queue - Access 使用の手引

[目次][用語][索引][前へ][次へ]

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構造体のフィールド 設定者 備考
JMSDestination Destination 送信時プロバイダ 送信時に設定しても無視されます。
JMSMessageID String MsgId 送信時プロバイダ 送信時に設定しても無視されます。
JMSTimestamp long PutDate,PutTime 送信時プロバイダ 送信時に設定しても無視されます。
JMSRedelivered boolean BackoutCount 受信時プロバイダ 送信時に設定しても無視されます。
JMSCorrelationID String※1 CorrelId クライアント(Message)
JMSReplyTo Destination ReplyToQ,ReplyToQMgr クライアント(Message)
JMSType String クライアント(Message) TP1/Message Queueでは使用されません。
JMSDeliveryMode int Persistence クライアント(QueueSender)
JMSExpiration long Expiry クライアント(QueueSender)
JMSPriority int Priority クライアント(QueueSender)

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

プロパティ 対応するMQMD構造体のフィールド 設定者 備考
JMSXAppID String PutApplName 送信時プロバイダ 送信時に設定しても無視されます。
JMSXUserID String UserIdentifier 送信時プロバイダ 送信時に設定しても無視されます。
JMSXDeliveryCount int BackoutCount 受信時プロバイダ 送信時に設定しても無視されます。
JMSXGroupID※1 String※2 GroupId クライアント(Message)
JMSXGroupSeq int MsgSeqNumber クライアント(Message)
JMS_HITACHI_PutApplType int PutApplType 送信時プロバイダ 送信時に設定しても無視されます。
JMS_HITACHI_CodedCharSetId int CodedCharSetId クライアント(Message)
JMS_HITACHI_Encoding int Encoding クライアント(Message)
JMS_HITACHI_Feedback int Feedback クライアント(Message)
JMS_HITACHI_MsgType int MsgType クライアント(Message)
JMS_HITACHI_Report int Report クライアント(Message)
JMS_HITACHI_Format String※3 Format クライアント(Message)
JMS_HITACHI_MQMF_LAST_MSG_IN_GROUP※1 boolean MsgFlags クライアント(Message)

(凡例)
−:該当しません。

注※1
プロパティJMSXGroupIDの文字列が有効かどうか,またプロパティJMS_HITACHI_MQMF_LAST_MSG_IN_GROUPの値によって,MQMD構造体のMsgFlagsフィールドに次の値が代入されます。
JMSXGroupIDの文字列 JMS_HITACHI_MQMF_LAST_MSG_IN_GROUPの値
false true
無効 MQMF_NONE
有効 MQMF_MSG_IN_GROUP MQMF_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プロパティの型変換

プロパティの型 読み込むときの型
boolean byte short int long float double String
書き込まれたときの型 boolean            
byte      
short        
int          
long            
float          
double            
String

(凡例)
○:型が変換されます。
空白:型が変換されません。この場合,読み込み時に例外がスローされます。

注※
String型で書き込まれた文字列が変換される場合,書き込まれた文字列が変換後の型のラッパークラスのvalueOfメソッドによって解釈ができないときは,例外がスローされる場合があります。