Hitachi

OpenTP1 Version 7 メッセージキューイングアクセス機能 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メソッドによって解釈ができないときは,例外がスローされる場合があります。