資料のありか
WMQ Javaインターフェース(Base&JMS)ワークショップ資料
2_MQ_ Javaデザインのポイント
-
Expiryは照会メッセージに設定するのが普通らしい。
-
MQ被仕向けでは、要求メッセージのGET〜応答メッセージのPUTまでをUOWとすべき。
-
応答メッセージには、要求メッセージのmessageIdをcorrelationIdに設定する必要がある。
-
応答メッセージは、要求メッセージに設定されている、応答先キュー・マネージャーと応答先キューに送信する必要がある。
-
応答メッセージは、応答先キュー・マネージャー名と同名のトランスミッション・キューに(リモート・キューを介さずに)PUTされ、要求元のキューに届く。
-
BaseJavaから利用する場合、文字コード変換はBaseJavaが自動でやってくれる。MQMessageのcharacterSetに、Unicodeからの変換先CCSIDを指定し、writeString()すればOK。
-
UOWはキュー・マネージャーとの1接続内でのみ制御できる。
-
PUT,GETをUOWに入れるかは、その度にMQxMO_SYNCPOINTで指定する。
-
MQのコネクション・プーリングは、あくまでも「使い回す」ものであり、「予め貯めておく」ものではない。起動直後から高い性能が求められるのであれば、空回しして「予め貯めておく」必要がある。
-
コネクション・マネージャがコネクション・プーリングを制御する。
-
プールのスコープはコネクション・マネージャーのインスタンスごと(なはず)。
- 対向先ごとにキュー・マネージャを用意するなら、対向先ごとにコネクション・マネージャのインスタンスを用意しておかないとマズイということか。
-
BaseJavaのメソッドは処理が異常終了した場合、MQExceptionをthrowする。適切なハンドリングが必要。
3_1_MQ_Javaシステム構成-その1
- バインディング接続(ローカル接続)を利用したシステム構成
4_MQ_Javaパフォーマンス
- コネクション・プーリングは実際に効果がありそう。
- BaseJavaはJMSより速い。
5_まとめ
- JMSを選択する理由はほぼない。事実上、BaseJava一択。