[開発][WMQ] Introduction to WMQ

WebSphereが持つJavaプログラミング・インタフェースは2つ
MQ Base Java (WebSphere MQ独自のIF)
JMS (J2EE)

WebSphereが持つアプリとqMgrの接続方法も2つ
―APが同一システム上で稼動するqMgrと直接接続するbinding接続
―APがnetwork経由でqMgrと接続するclient接続
どちらもMQ Base JavaJMSをサポートする

MQ Base Java
MQIJavaに移植したもの

□MQ Base Java/ プログラムの流れ
①必要なpkgのimport
. java.io.*やWMQアプリが使用するcom.ibm.mq.jar等のimport
. com.ibm.mq.jar以外のlibがある以下ディレクトリを環境変数CLASSPATHに追加し
. 必要に応じてimportする
. /opt/mqm/java/lib (@unix), {WMQ_HOME_DIR}/Java/lib (@windows)
②環境設定
. Javaアプリはshellやcmdで設定されている環境変数にアクセス出来ない
. (=環境変数MQSERVERを利用したクライアント接続が出来ない)
. そのため
. AP内で接続するqMgrの環境情報をコーディングする
. com.ibm.mq.jarのMQEnvironmentがそのためのクラス
③qMgrとの接続
. MQQueueManagerのコンストラクタ呼び出しでqMgrと接続する
④queueのopen
. MQQueueのinstanceを生成することでqueueがopenする
. instance生成2つ方法あり
. () using its constructor
. () calling MQQueueManager#accessQueue()
⑤各種parameterの設定
. MQPut/GetMessageOptionsに設定する
⑥メッセージ処理(queueへのput/get)
. WebSphere MQのメッセージは2層構造
. ―msgの属性や宛先情報を保持するヘッダ部分
. ―ユーザ・データ
. MQMessageはこれらの入れ物となる
. queueへの書き込み/読み出しはMQQueue#put/getで行う
⑦queueのclose
. MQQueue#close()でcloseする
⑧qMgrからの切断
. MQQueueManager#disconnect()で切断する

□MQ Base Java/ エラー処理
MQExceptionを処理する

□MQ Base Java/ マルチスレッド
MQQueueManagerやMQQueueを複数スレッドで共有できる
ただし synchronizedされている為 待たされるスレッドが発生しうる
そのため 複数スレッドでの並行処理はそれぞれのスレッドでqMgrやqueueを生成する必要がある

JMS
J2EEのJMS仕様に準拠したもの

JMS/ 構成要素
JMSクライアント
 ―JMSプロバイダ

□JMS/ メッセージ
JMSのメッセージは3層構造
―ヘッダ部分
―プロパティ部分
―ボディ部分

□JMS/ namespace(directory service)
APプログラムとJMSプロバイダである各製品の性質を分離する為にnamespaceを利用する
namespaceに登録しておいたqueue等の製品独自の属性やコンテキストをAPでlookupする

□JMS/ プログラムの流れ
「ドメイン」と呼ばれる2つのパターンに分類される
―PTP型
―Pub/Sub型
①import packages
②get connectionFactory
③get destination
④create connection
⑤create session
⑥create msgProducer / provider side
⑦create message / provider side
⑧send the message / provider side
⑨create msgConsumer / client side
⑩receive message / client side
⑪confirm the message / client side
⑫close resources
. close producer and consumer object using sender.close(), receiver.close(), session.close() and connection.close().

□JMS/ マルチスレッド
複数スレッドからの利用可否
―Destination:OK
―ConnectionFactiory:OK
―Connection:OK
―Session:NG
―MessageProducer:NG
―MessageConsumer:NG
同期点処理の単位であるSessionオブジェクトは複数スレッドから利用できない
マルチスレッドアプリから同時にメッセージ処理したい場合は
各スレッドでSessionオブジェクトを生成する必要がある

□JMS/ namespaceへの登録方法
WebSphere MQではJMSAdminというコマンドで登録できる
JMSAdminは JMSAdmin.configという構成ファイルで指定されたnamespaceに接続し
runmqscコマンドにコマンドで情報を登録する

■the differences
MQMD.MsgIdの設定:MQ Base Java = ○, JMS = ×
msgのSegmentation/Grouping : MQ Base Java = ○, JMS = ×
Message Selector : MQ Base Java = ×, JMS = ○
Pub/Sub : MQ Base Java = △, JMS = ○
非同期Listener : MQ Base Java = ×, JMS = ○


ref:
WebSphere MQ入門書, 9章 プログラミング・インターフェース ~その2 WebSphere MQ と Java~
http://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_intro/

tag : WebSphere MQ Base Java JMS MQI

2010-12-24 07:29 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud