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メソッドによって解釈ができないときは,例外がスローされる場合があります。