[開発][WMQ] design points

WMQ
Base JavaJMSの2つのAPIをサポートしてる?
前者がメッセージのグループ化やセグメント化で後者に勝る?
Base JavaMQIJMSゆう感じか?
MQMesageとかはMQIか?

JMSXプロパティ
JMSXをprefixに持つJMS仕様のプロパティで実装は義務付けられてない
プロバイダーがサポートしてるJMSXプロパティは
ConnectionMetaData#getJMSXPropertyNames
で分かる

WMQがサポートするJMSXプロパティ
JMSXUserID
JMSXAppID
JMSXDeliveryCount
JMSXGroupID
JMSXGroupSeq

コーディング・イメージ
Base Java
MQQueueManager qmgr;
JMS
MQQueueConnectionFactory

Selector
JMSヘッダとJMSプロパティの属性を指定して受信する機能
QueueReceiverに1つのみ設定でき変更不能
該当メッセージ見つけるまでQueueをbrowseするため
メッセージが滞留していると性能に影響する
String selector = "JMSMessageID=XXX"
ただし
JMSMessageIDかJMSCorrelationID指定の場合はWMQの検索機能(Queue内のMessageわbrowseしないため性能に影響しない)が使える
String selector = "JMSMessageID='ID:XXX'"

WMQ MessageID
put時にqMgrがMQMDのmessageIdに割り当てた値がJMSMessageIDに設定される
WMQのメッセージID: 24バイトのバイナリデータ
JMSMessageID: 文字列
WMQのmessageIdが'414D~'(バイナリデータ)ならput後のJMSMessageIDは'ID:414D~'(文字列)になる

相関ID
設定方法は3つ
1. 文字列を設定する
msg.setJMSCorrelationID("12345");
JMSCorrelationIDはMQMDのCorrelIdとMQRFH2ヘッダのCidに設定される
2. 16進数表記の文字列を設定する
xmtmsg.setJMSCorrelationID(rcvmsg.getJMSMessageID());
MQMDのCorrelIdにのみ設定される
3. バイト配列を設定
msg.setJMSCorrelationIDAsBytes(b);
MQMDのCorrelIdにのみ設定される
取得方法は2つ
1. getJMSCorrelationID
MQRFH2のCidがあればCid
MQMDのCorrelIdにのみ値あれば16進数表記のCorrelIdに“ID:”が付いたもの
2. getJMSCorrelationIDAsBytes
MQMDのCorrelIdに設定されてるバイナリデータの配列

MQのBrowse機能
・Queue内のmessageを削除せずに参照のみ行える
・browseしたmessageの中身を確認してからgetするか判断できる
・Browseでmessageを待てる(MQGMO_WAIT)
・lockを掛けて他のAPがbrowseしたmessagegetできなく出来る(MQGMO_LOCK)
・Cursorが指しているmessageをgetできる

JMSのBrowse機能
・Queue内のmessageを削除せずに参照のみ行える

Message Acknowledge
JMSの仕様で規定しているMSG受信処理に対する同期処理
自信したmessageに対してAPがacknowledgeするとmessageはqueueから削除される
transaction属性がtrueの場合はcommit時点でauto_acknowledgeされる
同じQueueSessionで行われるPUTは慈sんmessageのacknowledgeに関係なくPUTされる

AcknowledgeはQueueSessionに指定するoptionである
Session.AUTO_ACKNOWLEDGE:
→APがgetした時点自動的にacknowledgeされる
Session.CLIENT_ACKONOWLEDGE:
→APが明示的にacknowledgeする必要がある
→受信したmessageのacknowledgeメソッドでacknowledgeする
→acknowledgeメソッド発行時点でmessageがqueueから削除される
→acknowledgeせずに複数のmessageを受信している場合は1つのmessageにacknowledgeすると受信している全messageがacknowledgeされる
Session.DUPS_OK_ACKNOWLEDGE:
→2重受信を防ぐためのQueueSession処理を軽減させる
→障害時2重受信の可能性がある

JMSヘッダとMQMDの対応
JMSヘッダ / MQMD / MQRFH2 / 備考
JMSDestination / - / jms.Dst / Send Method
JMSDeliveryMode / Persistence / jms.Div / Send Method
JMSExpiration / Expiry / jms.Exp / Send Method
JMSPriority / Priority / jms.Pri / Send Method
JMSMessageID / MessageID / - / Send Method
JMsTimestamp / PutDate/PutTime / - / Send Method
JMSCorrelationID / CorrelId / jms.Cid / Message Object
JMSReplyTo / ReplyToQ / ReplyToQMgr / jms.Rto / Message Object
JMSType / - / mcd.Type / Message Object
JMDRedelivered / BackgoundCount / - / Receive-Only

JMSプロパティとMQMDの対応
JMSプロパティ / MQMD / MQRFH2 / 備考
JMSXUserID / UserIdentifier / - / Send Method
JMSXAppID / PutApplName / - / Send Method
JMSXdeliveryCount / BackoutCount / - / Receive-Only
JMSXGroupID / GroupId / jms.Gid / Message Object
JMSXGroupSeq / MsgSwqNumber / jms.Seq / Message Object
JMS_IBM_Report_Exception / Report / - / Message Object
JMS_IBM_Report_Expiration / Report / - / Message Object
JMS_IBM_Report_COA / Report / - / Message Object
JMS_IBM_Report_COD / Report / - / Message Object
JMS_IBM_Report_PAN / Report / - / Message Object
JMS_IBM_Report_NAN / Report / - / Message Object
JMS_IBM_Report_Pass_Msg_ID / Report / - / Message Object
JMS_IBM_Report_Pass_Correl_ID / Report / - / Message Object
JMS_IBM_Report_Discard_Msg / Report / - / Message Object
JMS_IBM_MsgType / MsgType / - / Message Object
JMS_IBM_Feedback / Feedback / - / Message Object
JMS_IBM_Format / Format / - / Message Object
JMS_IBM_PutApplType / PutApplType / - / Message Object
JMS_IBM_Encoding / Encoding / - / Message Object
JMS_IBM_Character_Set / CodedCharacterSetId / - / Message Object
JMS_IBM_PutDate / PutDate / - / Message Object
JMS_IBM_PutTime / PutTime / - / Message Object
JMS_IBM_Last_Msg_In_Group / MsgFlags / - / Message Object


ref:
ISE Web & Transaction System, MQ Java デザインのポイント, 2003/03
http://download.boulder.ibm.com/ibmdl/pub/software/dw/jp/websphere/wmq/java_ws/2.pdf

tag : WMQ WebSphere JMS JMSX MQI Base Java

2010-12-06 23:08 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud