...

WebSphere MQ V7.0.1 機能検証 ISE エンタープライズ・ミドルウェア 2009年11月

by user

on
Category: Documents
214

views

Report

Comments

Transcript

WebSphere MQ V7.0.1 機能検証 ISE エンタープライズ・ミドルウェア 2009年11月
WebSphere MQ V7.0.1
機能検証
ISE エンタープライズ・ミドルウェア
2009年11月
分散系
2
トピック
分散系
マルチ・インスタンス・キュー・マネージャー
自動再接続クライアント
イベントの追加
構成イベント
コマンド・イベント
その他の拡張
IBM
Message Service Client for .NET (XMS for .NET)
WCFのMQ用カスタム・チャネルのサポート
OCSPサポートの追加
サービス定義ウィザード(MQ Explorer)
パブリッシュEXITの追加
Pub/Subの拡張
この資料に含まれる情報は可能な限り正確を期しておりますが、日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受け
ておらず、当資料に記載された内容に関して当ワークショップの主催者である日本アイ・ビー・エム システムズ・エンジニアリング株式会社は何ら保証
するものではありません。
従って、この情報の利用またはこれらの技法の実施はひとえに使用者の責任において為されるものであり、資料の内容によって受けたいかなる被害
に関しても一切の保証をするものではありません。
当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。
3
マルチ・インスタンス・キュー・マネージャー
4
マルチ・インスタンス・キュー・マネージャーとは
WebSphere MQ V7.0.1(以下MQ V7.0.1)の新しい可用性ソリューション機能の1つ
HAコーディネーター製品(ex. HACMP など)を使用せずに同一キュー・マネージャーを複数マシ
ンで稼動させることが可能(Active-Standby構成)
共有キュー・マネージャー・データを外部(NFSや別サーバなど)に配置することで可用性が向上
自動フェール・オーバーが可能
アクティブ・インスタンスで障害が発生した場合、ネットワーク障害で共有キュー・マネージャー・
データに接続されていない場合など、自動でスタンバイ・インスタンスへフェールオーバー
2つ以上のキュー・マネージャー・インスタンスを構成することが可能
3つ目以降のキュー・マネージャー・インスタンスはスタンバイとして開始しておくことは不可
z/OS以外の全プラットフォーム(*)で対応
併せてMQ V7.0.1より strmqm、endmqm、dspmq などにオプションが追加
strmqm -x : マルチ・インスタンスとしてキュー・マネージャーの開始
endmqm -s : アクティブ・インスタンスを停止し、スタンバイ・インスタンスへフェールオーバー
dspmq -x : キュー・マネージャー・インスタンスについての情報を表示
など
(*) i5/OSとSolarisは現時点(2009.11月)では未対応。詳細は以下参照。
http://www-01.ibm.com/support/docview.wss?uid=swg21398427&myns=swgws&mynp=OCSSFKSJ&mync=R
5
動作イメージ
マルチ・インスタンス・キュー・マネージャー通常稼動時
マシンAのキュー・マネージャーがアクティブ・インスタンスとして、マシンBのキュー・マネー
ジャーがスタンバイ・インスタンスとして稼動
クライアントはマシンAへのCONNAMEで接続
MQクライアント
MQクライアント
キューマネージャー・データ
マシン A
キュー・
キュー・マネージャー:
マネージャー:QM1
アクティブ・
アクティブ・インスタンス
<QMGRS>/data
<QMGRS>/log
ネットワーク・ファイル・システム
キュー・
キュー・マネージャー・
マネージャー・データを
データを所有
6
マシン B
キュー・
キュー・マネージャー:
マネージャー:QM1
スタンバイ・
スタンバイ・インスタンス
動作イメージ
アクティブ・インスタンスがダウンし、スタンバイ・インスタンスへフェール・オーバー開始
マシンBのキュー・マネージャー・インスタンスがキュー・マネージャー・データの所有処理を開始する
クライアントからの接続は切断
アプリケーションにはBrokenは返らない
Client
connections
broken
MQクライアント
MQクライアント
マシン B
マシン A
キュー・マネージャー:QM1
アクティブ・インスタンス
フェール・
フェール・オーバー開始
オーバー開始
キュー・
キュー・マネージャー:
マネージャー:QM1
スタンバイ・
スタンバイ・インスタンス
ネットワーク・ファイル・システム
キュー・
キュー・マネージャー・
マネージャー・データの
データの所有処理の
所有処理の開始
7
動作イメージ
スタンバイ・インスタンスがアクティブ・インスタンスとして稼動開始
キュー・マネージャー・データの所有
クライアントはマシンBへのCONNAMEで再接続
MQクライアント
MQクライアント
Client
connections
reconnect
マシン A
マシン B
キュー・マネージャー:QM1
キュー・
キュー・マネージャー:
マネージャー:QM1
アクティブ・
アクティブ・インスタンス
ネットワーク・ファイル・システム
キュー・
キュー・マネージャー・
マネージャー・データを
データを所有
8
前提条件
ログ・ディレクトリとデータ・ディレクトリを配置するための共用ネットワーク・ファイルシステム
に配置
AIX : NFS v4以上
Windows : Windows共有、CIFS(Common Internet File System)など
ファイル・システムの要件 (InfoCenter)
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amqzag.do
c/fa70111_.htm
同一IDのmqmユーザ/グループを使用
AIXでは同一UID、GIDのmqmユーザ/グループ
Windowsではmqmドメイン・ローカル・グループ
注意:Windowsでドメイン・ローカル・グループを使用する理由
ドメイン・ローカル・グループ
– ドメイン、およびフォレストのユーザおよびグループを同一メンバーとして所有することができる
– ドメイン内のアクセス許可のみに使用することができる
~InfoCenterより~
ローカル・グループの場合
ドメイン・ローカル・グループの場合
9
設定の流れ(AIXの場合)
① キュー・マネージャー・データ用の共用ファイル・システムのセットアップ
dataとlogディレクトリ作成
同一UID、GIDのmqmユーザ/グループを作成
作成したディレクトリにアクセス権限(変更可能レベル)を付与
作成したファイルシステムの共有設定(export)
キューマネージャー・データ
<QMGRS>/data
マシン A
<QMGRS>/log
①
ネットワーク・ファイル・システム
10
マシン B
設定の流れ(AIXの場合)
② 共用ファイル・システムへのアクセス
キュー・マネージャーを稼動させる両マシンに①で作成したUID、GIDのmqmユーザと
mqmグループの作成
両マシンから共用ファイル・システムをマウント
ファイル・システムの検査
/usr/mqm/bin/配下のamqmfsckを実行
例) ./amqmfsck -v マウントしたパス
③ MQ V7.0.1の導入
マシン A
マシン B
②、 ③
②、 ③
ネットワーク・ファイル・システム
11
設定の流れ(AIXの場合)
④ アクティブ・インスタンス・キュー・マネージャーの作成と開始
crtmqm -ld ログパス -md QMGRデータ・パス QMGR名
strmqm -x QMGR名
⑤ スタンバイ・インスタンス・キュー・マネージャー定義の出力
アクティブ・インスタンスにてdspmqinf コマンドの実行結果としてスタンバイ・インスタンス作
成用のaddmqinfが出力される
dspmqinf -o command QMGR名
⑥ スタンバイ・インスタンス・キュー・マネージャーの作成と開始
⑤の実行結果のaddmqinfコマンドを使用してスタンバイ・インスタンス作成
例:addmqinf -s QueueManager -v Name=MQ701 -v Directory=MQ701 -v
Prefix=/var/mqm -v DataPath=/mnt/NFS4FileSystem/mq701/data/MQ701
マシン A
②
マシン B
キュー・
キュー・マネージャー:
マネージャー:QM1
スタンバイ・
スタンバイ・インスタンス
キュー・
キュー・マネージャー:
マネージャー:QM1
アクティブ・
アクティブ・インスタンス
④、 ⑤
⑥
ネットワーク・ファイル・システム
12
設定の流れ(Windowsの場合)
① MQ V7.0.1の導入
Windows環境ではこのタイミングでmqmドメイン・ローカル・グループが作成されるため、
事前にサーバーの役割を「ドメイン・コントローラー」にしておく
② キュー・マネージャー・データ用の共用ファイル・システムのセットアップ
dataとlogディレクトリ作成
作成したディレクトリにアクセス権限(変更可能レベル)を付与
Windows環境ではmqmドメイン・ローカル・グループをアクセス許可(変更権限)
作成したファイルシステムの共有設定(Windows共有など)
キューマネージャー・データ
<QMGRS>/data
マシン A
<QMGRS>/log
キュー・
キュー・マネージャー:
マネージャー:QM1
アクティブ・
アクティブ・インスタンス
①
マシン B
②
①
ネットワーク・ファイル・システム
13
設定の流れ(Windowsの場合)
③ アクティブ・インスタンス・キュー・マネージャーの作成と開始
crtmqm -ld ログパス -md QMGRデータ・パス QMGR名
strmqm -x QMGR名
④ スタンバイ・インスタンス・キュー・マネージャー定義の出力
アクティブ・インスタンスにてdspmqinf コマンドの実行結果としてスタンバイ・インスタンス作成用の
addmqinfが出力される
dspmqinf -o command QMGR名
⑤ スタンバイ・インスタンス・キュー・マネージャーの作成と開始
⑤の実行結果のaddmqinfコマンドを使用してスタンバイ・インスタンス作成
例:addmqinf -s QueueManager -v Name=MQ701 -v Directory=MQ701 -v
Prefix="C:¥Program Files¥IBM¥WebSphere MQ" -v
DataPath=¥¥MQFileServer¥WinShareDir¥mq701¥data¥MQ701
マシン A
②
マシン B
キュー・
キュー・マネージャー:
マネージャー:QM1
スタンバイ・
スタンバイ・インスタンス
キュー・
キュー・マネージャー:
マネージャー:QM1
アクティブ・
アクティブ・インスタンス
⑤
⑥
ネットワーク・ファイル・システム
14
考慮点・制約
2つ以上のキュー・マネージャー・インスタンスを構成することが可能
可用性を考慮しても3つ目以降はスタンバイとして開始しておくことができないため手動での起
動が必要
IPアドレスは引き継がないため、接続するチャネルにはCONNAMEには両ホストの情
報登録が必要
最初に起動したキュー・マネージャー・インスタンスがアクティブとして稼動
運用にて起動順序を決めておく方が良い
マルチ・インスタンス・キュー・マネージャーの情報は、共用キュー・マネージャー・データ・
ディレクトリーにある qm.ini および qmstatus.ini ファイルに保管
Windowsもレジストリではない
同一マルチ・インスタンス・キュー・マネージャーは同一バージョン(MQ V7.0.1以上)であ
ることが必須
15
考慮点・制約
ログおよびデータ・ディレクトリーは、FATファイル・システムには格納できない(Windows)
Windows環境でマルチ・インスタンス・キュー・マネージャーを稼動させる場合、ドメイン・
コントローラ上に作成しなくてはいけない
通常、業務サーバ(MQやWASなどが稼動)と、管理サーバ(ユーザ情報を管理するドメイン・
コントローラなど)を同一ネットワークセグメントに配置することはないため、セキュリティへの対応
も考慮する必要がある
Windows環境でのマルチ・インスタンス・キュー・マネージャーの起動オプションは「手動」
に設定
起動オプションを「自動」で起動すると、-xオプションなし(STANDBYを許可しない)でキュー・
マネージャーが開始されてしまうため
16
参考
以下のディレクトリにキュー・マネージャー情報、アクティブ/スタンバイのホスト名を保持
場所
AIX:/{NFSマウント・ルート名}/{キュー・マネージャー名}/data/MQ701
Windows:¥¥{共有ルート名}¥data
各ファイル
Active
(WindowsではActive.dat)
–現在アクティブ・インスタンスを稼働させているホストの情報を保持
Master
(WindowsではMaster.dat)
–現在アクティブ・インスタンスを稼働させているホストの情報を保持
–スタンバイ・インスタンスのAmqzxma0(実行コントローラ)が数秒間隔で定期的に当ファイルのロッ
クを確認
Standby
(WindowsではStandby.dat)
–キュー・マネージャーをstandbyモードで稼働させているホストの情報を保持
17
参考
MQエクスプローラでのマルチ・インスタンス・
キュー・マネージャーの表示例
[アクティブ・インスタンス]
[スタンバイ・インスタンス]
18
参考
MQエクスプローラでのマルチ・インスタンス・キュー・マネージャーの表示例
リモート・キュー・マネージャーとして登録した場合
19
クライアント自動再接続
20
概要
クライアント自動再接続機能とは
クライアント・ライブラリーが障害を検知して、再接続を行う機能
同一、または異なるキュー・マネージャーへの再接続が可能
ライブラリー・レベルでの再接続。アプリケーションはキュー・マネージャーの再接続を検
知しない
自動でコネクション・ハンドルが入れ替わるため、アプリケーションでの考慮が必要
再接続間隔は徐々に長くなる [幕張でのテスト結果より]
再接続タイムアウトを設定することが可能
自動再接続例
MQクライアント
MQクライアント
マシン A
キューマネージャー:
キューマネージャー:QM1
マルチ・
マルチ・インスタンス
マシン B
フェール・オーバー
ネットワーク・ファイル・システム
21
キューマネージャー:
キューマネージャー:QM1
アクティブ・
アクティブ・インスタンス
設定方法
クライアント自動再接続を使用するための設定項目
自動再接続のON/OFF
MQCONNXのMQCNOオプション、mqclient.ini
接続先キュー・マネージャーの登録
MQSERVER環境変数、チャネル定義テーブル
タイムアウト時間、自動再接続までの待機時間
mqclient.ini、コールバック関数コンテキスト(MQCBC)
22
設定方法
クライアント自動再接続のON/OFF
デフォルトでは自動再接続されないため、MQCONNX、mqclient.iniでの設定が必要
基本的にはMQCONNXの設定が優先
–mqclient.iniにDefRecon=DISABLEDが設定されている場合はこちらが優先
MQCONNX、mqclient.iniのいずれにも設定がない場合は、無効
MQCONNX
MQCNOオプションに以下のMQCNOオプションを設定
自動再接続可能なのはクライアント接続のみ
(ローカル接続で設定すると MQRC_OPTIONS_ERROR エラーが返る)
–MQCNO_RECONNECT_AS_DEF
mqclient.ini の設定に従う
mqclient.ini に設定がない場合はDISABLED
–MQCNO_RECONNECT
QmgrName パラメーターの値 MQCONNX と整合する任意のキュー・マネージャーに自動再接続
–MQCNO_RECONNECT_Q_MGR
最初に接続されていたキュー・マネージャーにのみ自動再接続可能
複数インスタンス・キュー・マネージャーを使用している場合、スタンバイ・キュー・マネージャーへの自動再接続
可能
–MQCNO_RECONNECT_DISABLED
自動再接続なし
23
設定方法
(続き)
mqclient.iniのCHANNELSスタンザで以下を設定
DefRecon=NO|YES|QMGR|DISABLED
–NO
MQCONNX でオーバーライドされない限り、 クライアントは自動再接続されない
–YES
MQCONNX でオーバーライドされない限り、 クライアントは自動再接続する
–QMGR
MQCONNX でオーバーライドされない限り、 クライアントは、同じキュー・マネージャーに対してのみ自動再接
続する。QMGR オプションは MQCNO_RECONNECT_Q_MGR と同じ
–DISABLED
クライアント・プログラムが MQCONNX MQI 呼び出しを使用して要求しても、 再接続は無効
24
設定方法
接続先キュー・マネージャーの登録
MQSERVER環境変数
アプリケーションの起動環境に設定
MQSERVER=クライアント接続チャネル名/プロトコル/アドレス情報 #1,アドレス情報 #2
– AIXの場合:export MQSERVER='SYSTEM.AUTO.SVRCONN/TCP/HostA (1414),HostB(1414)‘
– Windowsの場合:SET MQSERVER='SYSTEM.AUTO.SVRCONN/TCP/HostA (1414),HostB(1414)‘
通常のクライアント接続と同様に「チャネル名」、「プロトコル」、「アドレス情報」を‘/’(スラッシュ)区切りで指定
– アドレス情報はコンマ( , )区切りで複数リストすることが可能
チャネル定義テーブル
キュー・マネージャー側でクライアント接続チャネルを定義
DEFINE CHANNEL(チャネル名) CHLTYPE(CLNTCONN) TRPTYPE(プロトコル)
CONNAME(アドレス情報#1,アドレス情報#2) QMNAME(キュー・マネージャー名)
チャネル定義テーブルに複数のエントリを事前に定義しておく
チャネル定義はチャネル定義テーブル・ファイルに保存されるので、アプリケーション側に配布
– ファイル転送を行う場合は、バイナリ・モードで転送
25
設定方法
タイムアウト時間、自動再接続までの待機時間
自動再接続タイムアウト時間
mqclient.iniのCHANNELSスタンザで以下を設定
MQReconnectTimeout = n(秒)
–クライアント自動再接続のタイムアウト時間を設定
– デフォルトは1800(30分)
自動再接続までの待機時間
コールバック関数コンテキスト(MQCBC)のReconnectDelayフィールドにミリ秒単位で設定
–自動再接続までの待機時間を変更することが可能
– MQCBCのReasonフィールドの値がMQRC_RECONNECTINGである場合のみ使用
26
前提環境・条件
前提環境
MQサーバー、MQクライアント共にMQ V7.0.1以上の環境
アプリケーションがスレッド化されている
チャネルのSHARECNV属性は0よりも大きい
デフォルトは“10”
接続先のキュー・マネージャーで下記事象が発生した場合のみ、クライアントは自動再接続を開
始することが可能
通信障害
キュー・マネージャー、リスナーの障害
endmqm –s、またはendmqm –r でキュー・マネージャーが停止した場合
その他のオプションでのendmqm 、STOP CHANNEL 、STOP CONN は該当しない
27
アプリケーションの考慮点
クライアント自動再接続機能は、ライブラリ・レベルで行われるため、クライアント・アプリ
ケーションは再接続の検知ができない
コールバック機能のイベント・ハンドラーを用いて、接続が再試行されているかどうかを検出する
ことが可能
再接続の試行を開始した時には
MQRC_RECONNECTING、再接続が正常に行われた後には
MQRC_RECONNECTED を使用してイベント・ハンドラーに通知が行われる
グループメッセージでの論理的な順序保証のオプションはサポートされない
MQPMO_LOGICAL_ORDER
MQGMO_LOGICAL_ORDER
同期点なしのパーシステントメッセージの書き込み(MQPUT) は、取り消される可能性
がある
仕掛かり中のトランザクションはバックアウトされる
拡張トランザクション・クライアントはクライアント自動再接続機能をサポートしない
28
イベントの追加
29
イベントの追加
以下のイベントが新規追加
構成イベント
MQオブジェクトを操作する際に、生成されるイベント
変更前後のオブジェクト属性、変更操作したユーザーのID等を取得することが可能
コマンド・イベント
MQSCコマンドなど、キュー・マネージャーに対して操作を行う際に、生成されるイベント
発行されたコマンドのタイプ、MQSCコマンドのテキスト、実行したユーザーのID等を取得可能
MQSCコマンドの発行
キュー・マネージャー
コマンド・イベント・メッセージ
オブジェクト作成、
変更
イベント・キュー
構成イベント・メッセージ
30
構成イベント
MQオブジェクトを操作する際、生成されるイベント
下の4種のイベントを生成
オブジェクト作成イベント
オブジェクト変更イベント
オブジェクト削除イベント
オブジェクト・リフレッシュ・イベント
監査証跡に利用可能
オブジェクトが予期せずに変更された場合、変更したユーザーおよび時刻などを保管するなど
イベント・スイッチ
キュー・マネージャー属性でイベント生成のON/OFFを指定
CONFIGEV(DISABLED|ENABLED)
イベント・キュー
SYSTEM.ADMIN.CONFIG.EVENT
イベント・データに含まれる情報
種別
説明
発生元情報
変更が行われたキュー・マネージャー、変更を行ったユーザーの ID、および行われた変更方法
コンテキスト情報計
コマンド・メッセージからのメッセージ・データ内のコンテキスト情報
オブジェクト識別
オブジェクトの名前、タイプ
オブジェクト属性
オブジェクト内のすべての属性値
31
<参考>イベント発生条件
以下のいずれかのMQSCコマンド、または PCF でこれらに相当するコマンドが発行された場合
DEFINE/ALTER AUTHINFO
DEFINE/ALTER CFSTRUCT
DEFINE/ALTER CHANNEL
DEFINE/ALTER NAMELIST
DEFINE/ALTER PROCESS
DEFINE/ALTER QMODEL/QALIAS/QREMOTE
DEFINE/ALTER STGCLASS
DEFINE/ALTER TOPIC
DEFINE MAXSMSGS
ALTER QMGR (CONFIGEV 属性が DISABLED であり、ENABLED に変更されない場合を除く)
以下のいずれかのMQSCコマンド、または PCF でこれらに相当するコマンドが発行された場合
DELETE AUTHINFO
DELETE CFSTRUCT
DELETE CHANNEL
DELETE NAMELIST
DELETE PROCESS
DELETE QMODEL/QALIAS/QREMOTE
DELETE STGCLASS
DELETE TOPIC
REFRESH QMGR
以下のいずれかのコマンド、または PCF でこれらに相当するコマンドが、ローカル・キューに対して発行された場合
DELETE QLOCAL(一時動的キューは対象外)
DEFINE/ALTER QLOCAL(一時動的キューは対象外)
一時動的キュー以外に対して MQSET 呼び出しが発行された場合
32
構成イベントの注意点
すべてのオブジェクトに対する構成イベントを生成することが可能
MQオブジェクトの構成などを一度に取得したい場合などに利用可能
REFRESH QMGR、または PCF コマンドで生成
生成されるイベントのフィルタリングが可能
– オブジェクト名
– オブジェクト・タイプ
– リフレッシュ間隔
構成イベント・メッセージが生成されないケース
コマンドまたは MQSET 呼び出しが失敗した場合
イベント・キューへのイベント・メッセージの書き込みが失敗した場合
一時動的キューに対する操作
TRIGGER キュー属性に対して内部変更が行われた場合
構成イベント・キュー SYSTEM.ADMIN.CONFIG.EVENTに対する操作
(ただし、REFRESH
QMGR コマンドによる場合は除く)
クラスタリングを変更するREFRESH/RESET CLUSTER コマンドと RESUME/SUSPEND
キュー・マネージャーの作成/削除
33
コマンド・イベント
MQSC または PCF コマンドが正常に実行された際に、生成されるイベント
実行されたコマンドの監査証跡に利用可能
オブジェクトが予期せずに変更された場合、変更したユーザーおよび時刻などを保管することが可能
イベント・スイッチ
キュー・マネージャー属性でイベント生成のON/OFFを指定
CMDEV (ENABLED | DISABLED | NODISPLAY )
ENABLED
:MQSC コマンドまたは PCF コマンドが正常に実行された場合イベント生成
NODISPLAY :MQSC コマンドまたは PCF コマンドが正常に実行された場合(DISPLAY コマンド (MQSC)
および照会コマンド (PCF)を除く)
DISABLED :オフ
イベント・キュー: SYSTEM.ADMIN.COMMAND.EVENT
イベント・データに含まれる情報
種別
説明
発生元情報
キュー・マネージャー、コマンドを発行したユーザー ID、およびコマンドの 発行方法 (例えばコンソー
ル・コマンドによるものなど)
コンテキスト情報
コマンド・メッセージからのメッセージ・データ内のコンテキスト情報
コマンド情報
発行されたコマンドのタイプ
コマンド・データ
PCF コマンドでは、コマンド・データ
MQSC コマンドでは、コマンド・テキスト
34
コマンド・イベントの注意点
ALTER QMGR、または PCF コマンド Change Queue Manager実行時のイベント
実行前、もしくは、実行後に、CMDEV(ENABLED)が指定されてる場合、イベントが生成
コマンド・イベントが生成されないケース
コマンドが失敗した場合
イベント・キューへのイベント・メッセージの書き込みが失敗した場合
35
その他の拡張
36
IBM Message Service Client for .NET (XMS for .NET)
サポート・パックIA9Hの統合
IA9H IBM Message Service Client for .NETが製品に統合
IBM Message Service Client for .NETの特徴
Java以外の言語で使用可能なメッセージングAPI
C,
JMSプロバイダー
C++, .NET版を提供
MQ
JMS 1.1に準拠
2つのメッセージング・モデル
–Point to point(PTP)
–Publish/Subscribe(Pub/Sub)
主要なクラス
XMSアプリケーション
C/C++/C#
JMS
他社メッセー
ジング製品
他社メッセー
ジング製品
– Connection, Session, Destination, Producer, Comsumer…
メッセージング・サービス
5タイプのメッセージ
– TextMessage, BytesMessage, ObjectMessage, StreamMessage, MapMessage
MQ v7.0新機能を使用可能
非同期PUT/GET、共用会話、Pub/Sub…
37
JMS
JMS
クライアント
IBM Message Service Client for .NET (XMS for .NET)
前提
Microsoft® Windows® XP (Service Pack 1 適用済み) or Microsoft Windows 2003
Server.NET Framework v2.0
v7.0.1.0 or later
MQクライアント・ライブラリ、キュー・マネージャー
クライアント接続の場合、MQ
v7.0, v6.0, v5.3キュー・マネージャーへ接続可能
ローカル接続の場合、MQ v7.0.1のみ接続可能
.NET Framework v2.0
提供サンプル
配置ディレクトリー
C:¥Program
Files¥IBM¥WebSphere MQ¥Tools¥dotnet¥samples¥cs配下
– SampleProducer
– SampleComsumer
– SampleCommon
38
WCFのMQ用カスタム・チャネルのサポート
WCFは、.NET上の新しいサービス指向のプログラミング・モデル
WCFアプリケーションはカスタム・チャネル・スタックを通じて、様々な通信プロトコルを利用できる
HTTP、TCPIP、MSMQなど
MQ用のカスタム・チャネルにより、WCFアプリケーションとMQアプリケーションの連携が可能
.NET Framwork 3.0または3.5のサポート
XMS .NETの機能を利用
MQ
V7.0.1は、このWCFプログラム・モデルにおけるえMQ用カスタム・スタック・チャネルを提供
MQを意識せずにWCFクライアント、サービス間でデータ送受信が可能
WCFアプリケーション
MQアプリケーション
Native WMQ
Application
WCF Client
Application
WCF Service
Application
WCF Services
Layer
WCF Services
Layer
WCF Channel Stack
WCF Channel Stack
Protocols..
Protocols..
Message
Encoder
Message
Encoder
WMQ
Transport
WMQ
Q
39
WMQ
Transport
SOAP/JMSアプリケーション
WMQ
SOAP/JMS
SOAP
Layer
Web
Service
WCFのMQ用カスタム・チャネルのサポート
前提
MicrosoftR
.NET Framework v3.0 以降
XMS.NETの機能を利用
開発環境
Microsoft
Visual Studio 2008 または Windows Software Development Kit for .NET 3.0 以降
Microsoft .NET Framework V3.5 以降を、ソリューション・ファイルを作成するマシンに導入することが必要
主要クラス
Namespace: IBM.XMS.WCF 以下
Transport
Binding Name: IBM.XMS.WCF.SoapJmsIbmTransportBindingElement
Transport Binding Importer: IBM.XMS.WCF.SoapJmsIbmTransportBindingElementImporter
Transport Binding Config: IBM.XMS.WCF.SoapJmsIbmTransportBindingElementConfig
提供サンプル
配置ディレクトリー
MQInstallDir¥tools¥wcf¥samples¥
MQInstallDir¥tools¥wcf¥docs¥examples
– svcutil.exe.config:Microsoft WCF svcutil クライアント・プロキシー生成ツールで カスタム・チャネルを認識できるようにす
るために必要な構成設定
40
OCSPサポートの追加
SSLで使用するX.509デジタル証明書の有効期限切れを検知するためのプロトコルと
してOCSPプロトコルを新たにサポート
OCSPとは
オンラインで証明書の失効情報を確認するためのプロトコル( RFC2560で規定)
証明書利用者(OCSP リクエスタ)は、OCSP レスポンダ(OCSP サーバーとも呼ばれる)に
失効情報を問い合わせる
OCSP レスポンダは、問い合わせに対して証明書の状態を返す
良好/
失効/ 不明
OSCPのリクエスト、レスポンスはHTTP/HTTPSプロトコル上で行われる
証明書失効情報の伝達
CA認証局
証明書発行
失効情報の問い合わせ
OCSPレスポンダ
証明書の状態
有効/失効/不明
OCSPリクエスタ
41
OCSP設定
OCSPレスポンダが以下のいずれかで設定されている場合、失効確認が有効となる
検査対象の証明書内の AuthorityInfoAccess (AIA) 証明書拡張
認証情報オブジェクト
MQクライアント・アプリケーション
※CA証明書を使用する場合のみ、OCSP設定は有効
認証情報オブジェクトでのOCSPレスポンダの指定
AUTHINFOオブジェクトの作成
AUTHTYPE:OCSP
OCSPURL:OCSPレスポンダのURLを指定
DEFINE AUTHINFO( authinfo_name ) AUTHTYPE( OCSP ) OCSPURL ( string )
NAMELISTに作成したAUTHINFOを指定
DEFINE NAMELIST( namelist_name) names( authinfo_name)
キュー・マネージャーのSSLCRLNL属性に作成したNAMELISTを指定
ALTER QMGR SSLCRLNL( namelist_name)
MQクライアントでOCSPレスポンダを指定
MQCONNX: MQAIR構造体にOCSP情報を設定し、MQAIR構造体のアドレスをMQSCO構
造体に引き渡す.さらにMQSCO構造体のアドレスをMQCONNX実行時に引数としてわたす
SSLサーバ側で上記の設定がされている状態でクライアント接続チャネルを作成
42
OCSPからのレスポンス
OCSPからのレスポンス
OCSPレスポンダへの問い合わせに対して、以下のいずれかが返る
良好:証明書は有効です。
失効:証明書は失効しています。
不明:この結果になるのは、次の 3 つのうちのいずれかが原因である可能性があります。
– WebSphere MQ が OCSP 応答側にアクセスできない。
– OCSP 応答側が応答を送信したが、WebSphere MQ が応答のデジタル署名を検証できない。
– OCSP 応答側が、その証明書に関する失効データを保持していないことを示す応答を送信した。
レスポンスへの対応
OCSP応答「不明」を受信した場合、OCSPAuthentication設定値(qm.ini, SSLスタンザ)により
動作が異なる
OCSPAuthentication=REQUIRED (デフォルト)| OPTIONAL | WAR
REQUIRED:
接続を拒否し、AMQ9716エラーを返す
OPTIONAL: チャネルの開始を許可
WARN: チャネルは開始されるが、AMQ9717 警告をエラー・ログに出力
43
サービス定義ウィザード
WSDL記述を生成可能なGUIウィザード
Eclipse プラグインとして提供
ナビゲータ・ビューからサービス定義ウィザードを開始
生成されたWSDL
44
パブリッシュEXITの追加
パブリッシュされたメッセージがサブスクライバーによって受信される前に、任意のロジック
を呼び出すことが可能
z/OSはサポート外
以下の操作を行うことが可能
各サブスクライバーにパブリッシュされるメッセージの内容を検査
各サブスクライバーにパブリッシュされるメッセージの内容を変更
メッセージのPUT先キューを変更
メッセージをサブスクライバーに送信しないことを選択
パブリッシュ出口は、以下の操作時、キュー・マネージャー・プロセスで実行
1 つ以上のサブスクライバーへのパブリッシュ操作
1 つ以上のリテイン・メッセージが送信されるサブスクライブ操作(MQSUB)
1 つ以上のリテイン・メッセージが送信されるサブスクリプション要求操作(MQSUBRQ)
45
パブリッシュEXITの追加
構文
MQ_PUBLISH_EXIT(ExitParms, PubContext, SubContext)
各パラメーターの説明
パラメータ
タイプ
説明
ExitParms
MQPSXP
入出力
出口パラメーターの構造。
この構造には、出口の呼び出しに関する情報が含まれます。
PubContext
MQPBC
入力
パブリケーション・コンテキストの構造。
この構造には、パブリケーションのパブリッシャーに関するコンテキスト情報が含まれます。
SubContext
MQSBC
入出力
サブスクリプション・コンテキストの構造。
この構造には、パブリケーションを受信するサブスクライバーに関するコンテキスト情報が
含まれます。
コンパイル方法は、チャネル出口と同様
記述例
#include “cmqc.h”
#include “cmqxc.h”
MQ_PUBLISH_EXIT MyPublishExit;
void MQENTRY MyPublishExit( PMQPSXP pExitParms,
PMQPBC pPubContext,
PMQSBC pSubContext )
{
/* C language statements to perform the function of the exit */
}
46
パブリッシュEXITの追加
キュー・マネージャー構成ファイルで設定
qm.ini ファイルのPublishSubscribe スタンザを設定
PublishExitPath=[path]│module_name
パブリッシュ出口コードを含むモジュールの名前とパス
PublishExitFunction=function_name
パブリッシュ出口コードを含むモジュールへの関数エントリー・ポイントの名前
PublishExitData=string
キュー・マネージャーがパブリッシュ出口を呼び出している場合、入力として
MQPSXP 構造が渡されます。
PublishExitData 属性を使用して指定されたデータは、構造の ExitData フィールドに入ります
Windowsの場合は、MQ Explorerから設定
設定後、キュー・マネージャーの再起動が必要
47
Pub/Subその他の拡張
MQPMOオプションの追加
MQPMO_WARN_IF_NO_SUBS_MATCHED
パブリケーションと一致するサブスクリプションがない場合、MQCC_WARNING
および
MQRC_NO_SUBS_MATCHED 理由コードを戻す
WMBv7からPubSubエンジンをMQv701に統合
Publicationノードから、WMBではなくMQのPubSubエンジンをMQAPI経由で呼び出す
WMB
Contents
Based Filtering
インターフェース
MQ
48
Contents
Based Filtering
z/OS
49
トピック
z/OS
64bitストレージの活用
ログ圧縮書き出し
GROUP UR
LE バッチ・アプリケーションの構築
移行
この資料に含まれる情報は可能な限り正確を期しておりますが、日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受け
ておらず、当資料に記載された内容に関して当ワークショップの主催者である日本アイ・ビー・エム システムズ・エンジニアリング株式会社は何ら保証
するものではありません。
従って、この情報の利用またはこれらの技法の実施はひとえに使用者の責任において為されるものであり、資料の内容によって受けたいかなる被害
に関しても一切の保証をするものではありません。
当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。
50
64bitストレージの活用
51
64bitストレージの活用
V7.0.1より以下のコンポーネントも64bitストレージ(Above 2GB)を使用する
ロック
未解決のUOWでのメッセージに対するロック、キューのオープン・ハンドルなど
キューのインデックス
インデックス指定されたキューに保持できるメッセージ数の増加が可能
セキュリティ
セキュリティ情報に関するコントロール・ブロック
Pub/Subエンジン(V7.0.0より対応)
トピック・ツリー、サブスクリプションに関するコントロール・ブロック
MEMLIMITの設定
MEMLIMITとは
各アドレス・スペースにおけるAbove 2GBの使用量を制限するOSのパラメーター
z/OS V1.9のデフォルト:MEMLIMIT=0GB ⇒2GB aboveが使えない
z/OS V1.10のデフォルト:MEMLIMIT=2GB
MEMLIMITの設定値を確認し、変更が必要な場合はMQ開始プロシージャーに設定する
例) z/OS V1.9のデフォルト:MEMLIMIT=0GBの場合⇒ MEMLIMIT=2GをssidMSTRに設定
//PROCSTEP EXEC PGM=CSQYASCP,REGION=OM,MEMLIMIT=2G
参照テクニカルフラッシュ
「z/OS V1.10: PARMLIB(SMFPRMxx) MEMLIMITパラメーターの省略時値変更に伴う影響とその対応」
http://www-06.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-000698D5
52
ログ圧縮書き出し
53
ログ圧縮書き出し
パーシステント・メッセージをMQPUTする際に書き出すログ・レコードの
圧縮が可能
圧縮ロジックはRLE(連長圧縮)
ブランクやPadding文字(SBCS)が連続するようなデータには有効
MQヘッダー部も圧縮対象
共用キューへのPUTは対象外
メリット /デメリット
【メリット】
ログ書き出し量の減少に伴うスループットの向上
ログ・データ・セットのサイズの縮小
【デメリット】
圧縮アルゴリズムはRLEなので、圧縮効率がよくないデータもあり得る
DBCS文字は圧縮されない
CPUコストがかかる
54
ログ圧縮書き出しの管理
ログ圧縮機能の設定
前提:ZPARM-CSQ6SYSPのOPMODE=NEWFUNC必須
CSQ6LOGPのCOMPLOGまたはSET LOGコマンドで指定
NONE :ログ・データ圧縮を使用しない(デフォルト値)
RLE :ログ・データ圧縮を実行
ANY :最大限のログ・レコード圧縮を実現できる圧縮アルゴリズムをキュー・マネージャーが選択。結果的
に RLE 圧縮が行われる
DISPLAY LOGコマンドで現行設定を確認可能
MQ Explorerでの指定は不可
SMF type 115-QJST(ログマネージャー統計)にログ圧縮関連のフィールドが追加
圧縮レートは、ログマネージャー統計で確認可能
55
ログ圧縮レート(SMF)
ログ圧縮関連のフィールド
フィールド名
説明
qjstcmpreq
圧縮要求回数(number of compression requests)
qjstcmpfail
圧縮ができなかった回数
(the number of times the queue manager was unable to achieve any
reduction in record length)
qjstcmpuncmp
圧縮前バイト数(the total bytes before compression)
qjstcmpcomp
圧縮後バイト数(the total of compressed bytes written to the log)
幕張テスト結果
SMF Dump用サンプルジョブ(CSQ4SMFJ)を使用してSMFレコードを処理
「あ」(DBCS)80バイト×100msg、「A」(SBCS)80バイト×100msg送信後のログマネージャー統計データ
フィールド
数値
説明
qjstcmpreq
00000200
200メッセージ圧縮(*)
qjstcmpfail
00000000
圧縮できないメッセージなし
qjstcmpuncmp
0000000000102000
圧縮対象サイズ
qjstcmpcomp
0000000000039800
圧縮後サイズ
(*)MQMDも圧縮対象なのでユーザーデータ部がDBCSのみのメッセージも含め、200メッセージすべてが圧縮された
56
<参考> ログ圧縮書き出し 幕張テスト結果
PersistentメッセージをMQPUTし、ログのLAST RBAを確認
テスト方法
1. DISPLAY LOGコマンドにてLAST RBA確認
2. テストJOBにてパーシステント・メッセージ10件をMQPUT
3. DISPLAY LOGコマンドにてLAST RBA確認
ケース1:SBCS繰り返し文字列を含む100ByteをMQPUT
ログ圧縮設定
DISPLAY LOGコマンド
NONE
TEST前
676CB
423627
-
10MSG-PUT①
6A0FC
434428
10801
10MSG-PUT②
6CA28
444968
10540
10MSG-PUT③
6E7AC
452524
7556
10MSG-PUT④
704CC
459980
7456
RLE
LAST RBA(HEX)
約30%のログ量削減
57
DEC
差(DEC)
<参考> ログ圧縮書き出し 幕張テスト結果
ケース2:SBCS繰り返し文字列を含む1024ByteをMQPUT
ログ圧縮設定
DISPLAY LOGコマンド
NONE
TEST前
8C6D395
147248021
-
10MSG-PUT①
8C72206
147268102
20081
10MSG-PUT②
8C77000
147288064
19962
10MSG-PUT③
8C7BE75
147308149
20085
10MSG-PUT④
8C7DC9B
147315867
7718
10MSG-PUT⑤
8C7FAD4
147323604
7737
10MSG-PUT⑥
8C8188F
147331215
7611
RLE
LAST RBA(HEX)
DEC
差(DEC)
約60%のログ量削減
開発元での測定結果はパフォーマンス・レポート参照
“MP1G: WebSphere MQ for z/OS V7.0.1 Performance Report”
http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24024589&loc=en_US&cs=utf-8&lang=en
58
<参考> ログ印刷ユーティリティの出力結果
ログ印刷ユーティリティ(CSQ1LOGP)では圧縮ログの出力も可能
<圧縮ログ
圧縮ログ>
ログ>
000008CBEB81 URID(000008CBEAD4) RM(DATA) LRID(00A10014.C3D4D7C8) TYPE( REDO )
SUBTYPE( INSERT ) RECORD LENGTH(0101)
**** 00DD0028 0400000C C9500000 08CBEAD4 000008CB EB59
0000 00A10014 C3D4D7C8 01010000 000001FE 000000B3 80830008 04000011 0101F609
0020 86000103 8300010A 84000750 00001101 01A68300 01018300 08016000 00110100
0040 469E0004 0160D415 83000901 C4CAB051 2E55D38F 83000150 84FF8400 04D4C440
0060 40830001 01870001 0884FF86 00060311 0000056E 88408700 0901C3E2 D840D4F7
0080 F1C18840 08C4CAB0 512E55D3 8F9C00B0 4004D4F7 F1C1AC40 06D4D8D4 F0F0F486
00A0 40A000A0 40830008 02D4D8D4 C2D7E4E3 954010F2 F0F0F9F0 F9F1F5F0 F9F5F2F0
00C0 F8F7F784 40D0C1
*
I&
M
*
CMPH
c
6
*f c d &
wc c *
-M c D
L c &d d MD
* c g d f
>h g CSQ M7
*1Ah D
L
M71A MQM004f
*
c MQMBPUTn 2009091509520
*877d A
<通常ログ
通常ログ>
ログ>
000008CBEB81 URID(000008CBEAD4) RM(DATA) LRID(00000004.00001101) TYPE(
SUBTYPE( INSERT ) RECORD LENGTH(01F6)
**** 02140028 0400000C C9500000 08CBEAD4 000008CB EB59
0000 00000004 00001101 01F60900 00000000 00030000 000A0000 00005000
0020 A6000000 01000000 01600000 11010046 00000000 00000000 00000000
0040 00000000 00000000 00000000 00000160 D4150000 0001C4CA B0512E55
0060 0050FFFF FFFF0000 0000D4C4 40400000 00010000 00000000 0008FFFF
0080 00000000 03110000 056E4040 40404040 40400000 00000000 0001C3E2
00A0 F1C14040 40404040 4040C4CA B0512E55 D38F0000 00000000 00000000
00C0 00000000 00000000 00000000 00004040 40404040 40404040 40404040
00E0 40404040 40404040 40404040 40404040 40404040 40404040 40404040
0100 F1C14040 40404040 40404040 40404040 40404040 40404040 40404040
0120 40404040 40404040 40404040 4040D4D8 D4F0F0F4 40404040 40400000
0140 00000000 00000000 00000000 00000000 00000000 00000000 00004040
0160 40404040 40404040 40404040 40404040 40404040 40404040 40400000
0180 D4C2D7E4 E3404040 40404040 40404040 40404040 40404040 4040F2F0
01A0 F1F5F0F9 F5F2F0F8 F7F74040 4040C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1
01C0 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1
01E0 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1
59
REDO )
00110101
00000000
D38F0000
FFFF0000
D840D4F7
00000000
40404040
4040D4F7
40404040
00000000
40404040
0002D4D8
F0F9F0F9
C1C1C1C1
C1C1C1C1
C1C1
*
I&
M
*
6
&
*w
*
-M
D
L
* &
MD
*
>
CSQ M7
*1A
D
L
*
*
M7
*1A
*
MQM004
*
*
MQ
*MBPUT
200909
*1509520877
AAAAAAAAAAAAAAAAAA
*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
キュー共用グループ単位の
URリカバリー
(GROUPUR)
60
キュー共用グループ単位のURリカバリー(GROUPUR)
2フェーズコミット環境で、ピア・リカバリーが可能
障害時に in-doubtをグループ内の他のキュー・マネージャーが解消できる
トランザクション・マネージャは障害のあったキュー・マネージャーに接続しなくてもよい
トランザクション・マネージャーが拡張トランザクショナル・クライアントで接続している場合に
使用可能
WASからのクライアント接続で2フェーズコミットを利用する場合など
管理
前提:ZPARM-CSQ6SYSPのOPMODE=NEWFUNC必須
CFストラクチャー:CSQSYSAPPLを定義
新規システム用の共用キューSYSTEM.QSG.UR.RESOLUTION.QUEUEを定義し、CSQSYSAPPL
ストラクチャーに配置
QMGR属性(GROUPUR)で制御
ENABLED:
XAクライアント・アプリケーションが、QSG名を使用してグループUR処理を開始できる
DISABLED:
XAクライアント・アプリケーションは、QMGR名を指定して接続する(グループURは使用できない)
61
キュー共用グループ単位のURリカバリー(GROUPUR)
QSG1
CF
CSQADMIN
GROUPUR
(ENABLED)
SYSTEM.QSG.UR.
RESOLUTION.
QUEUE
CEC1
QM01MSTR
QM02MSTR
CSQSYSAPPL
QM01CHIN
QM02CHIN
TCPIP/VTAM
TCPIP/VTAM
APPL STRUCTURE
(User Queue)
• アプリケーションが
GenericAddress経由で
QM01に接続
• 2PC処理中にQM01がダウン
• アプリケーションは接続リトライ
を行いQM02に接続し、2PC
処理中のトランザクション処理
を継続する
CEC2
Network(GENERIC ADDRESS / PORT)
• XAOpenStringにQSG
名指定
WAS
TM(ETC)
XA Client APPL
62
• ConnectionFactory
にQSG名指定
GROUPUR
(ENABLED)
LE バッチ・アプリケーションの構築
63
LE バッチ・
バッチ・アプリケーションの
アプリケーションの構築
LE環境のダイナミック・リンク・ライブラリー (DLL)を提供
従来のスタブではなく、DLL経由でMQIを発行
31
ビット LE 呼び出しインターフェース
31 ビット XPLINK 呼び出しインターフェース
XPLINKとは
OS/390 V2R10 からの機能
ファンクション・コールのオーバーヘッドを削減し、Cプログラムのパフォーマンスが向上
実行パス・レングスの最適化
小さい関数を多数コールするようなプログラミング・モデルで効果大
–オブジェクト指向プログラミング→ CPUコスト削減とパフォーマンスの向上
DLL を使用するには
サイドデッキ と呼ばれるものに対してバインドまたはリンク
サイドデッキはSCSQDEFS ライブラリーで提供される
31 ビット LE DLL
31 ビット XPLINK DLL
同等のスタブ名
1 フェーズ・コミット
CSQBMQ1
CSQBMQ1X
CSQBSTUB
RRS による2 フェーズ・コミット
(RRSVerbを使用)
CSQBRR1
CSQBRR1X
CSQBRSTB
RRS による2 フェーズ・コミット
(MQI Verbを使用)
CSQBRI1
CSQBRI1X
CSQBRRSI
64
XPLinkを使用する場合のサンプル生成JCL
//*------------------------------------------------------------------//M71BXCB JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//EDCXCB PROC INFILE=,
//* BIND STEP:
< INPUT ... REQUIRED
//*-------------------------------------------------------------------
//
CREGSIZ='148M',
//
CRUN=,
< COMPILER RUNTIME OPTIONS
//
CPARM=,
< COMPILER OPTIONS
//
LIBPRFX='CEE',
< PREFIX FOR LIBRARY DSN
//
LNGPRFX='CBC',
< PREFIX FOR LANGUAGE DSN
//
BPARM='LIST=NOIMP',
< BINDER OPTIONS
//
BREGSIZ='20M',
< BINDER REGION SIZE
//
TUNIT='SYSALLDA',
< UNIT FOR TEMPORARY FILES
//
TSPACE='(32000,(30,30))',
< SIZE FOR TEMPORARY FILES
//
OUTFILE='&&GSET(GO),DISP=(NEW,PASS),UNIT=SYSALLDA,SPACE=(TRK,(7,7,
//
< COMPILER REGION SIZE
//BIND
//
//STEPLIB DD DSNAME=&LIBPRFX..SCEERUN2,DISP=SHR
1)),DSNTYPE=LIBRARY'
//* COMPILE STEP:
//COMPILE EXEC PGM=CCNDRVR,REGION=&CREGSIZ,
DD DSNAME=&LIBPRFX..SCEERUN,DISP=SHR
//SYSIN
DD DSNAME=&INFILE,DISP=SHR
//SYSLIB
DD DSNAME=&LIBPRFX..SCEEH.H,DISP=SHR
//
DD DSNAME=&LIBPRFX..SCEEH.SYS.H,DISP=SHR
//
DD DISP=SHR,DSN=MQM701B.SCSQC370
//SYSLIN
DD DSNAME=&&LOADSET,UNIT=&TUNIT.,
//
DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
//
DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSOBJ
DD DSNAME=CEE.SCEEOBJ,DISP=SHR
//
DD DSNAME=MQM701B.SCSQDEFS,DISP=SHR
//SYSLIN
DD DSNAME=*.COMPILE.SYSLIN,DISP=(OLD,DELETE)
//
DD DSNAME=&LIBPRFX..SCEELIB(CELHS003),DISP=SHR
//
DD DSNAME=&LIBPRFX..SCEELIB(CELHS001),DISP=SHR
//
DD DDNAME=SYSIN
//SYSDEFSD DD DUMMY
DD DUMMY
// PEND
//STEPLIB DD DSNAME=&LIBPRFX..SCEERUN2,DISP=SHR
//
DD DSNAME=&LIBPRFX..SCEEBND2,DISP=SHR
//SYSIN
PARM=('&CRUN/XPLINK GOFF &CPARM')
DD DSNAME=&LNGPRFX..SCCNCMP,DISP=SHR
DD DSNAME=&LIBPRFX..SCEERUN,DISP=SHR
//SYSLIB
//SYSLMOD DD DSNAME=&OUTFILE
//*-------------------------------------------------------------------
//
//
//SYSPRINT DD SYSOUT=*
//*-------------------------------------------------------------------
//
EXEC PGM=IEWL,REGION=&BREGSIZ,COND=(4,LT,COMPILE),
PARM='AMODE=31,MAP,RENT,DYNAM=DLL,CASE=MIXED,&BPARM'
//STEP1 EXEC EDCXCB,
// CPARM='OPTF(DD:OPTF)',
// BPARM='XREF,MAP,DYNAM=DLL',
// INFILE='MQM005.PGM.SRC(CSQ4BCK1)'
//COMPILE.OPTF DD *
RENT,CHECKOUT(ALL),SSCOM,DEFINE(MVS),NOMARGINS,NOSEQ,XPLINK,DLL
SE(DD:SYSLIBV)
//BIND.SYSLMOD DD DISP=SHR,DSNAME=MQM005.PGM.LOAD
//BIND.SYSIN DD *
ENTRY CEESTART
.....
INCLUDE SYSOBJ(CSQBMQ1X)
65
NAME CSQ4BCK1(R)
/*
移行
66
移行
移行パス
V7.0.1では、V6.0、V7.0.0からの移行・フォールバックをサポート
V6向けAPAR
- PK95835
V7向けAPAR - PK95837
V7.0.1では2つのモードがある
ZPARMのOPMODE=(mode,velificationLevel)パラメーターでモードで指定
デフォルト値はOPMODE=(COMPAT,701)
SET
SYSTEMコマンドによる動的変更は不可⇒ZPARMの再生成、キュー・マネージャーのリスタートが必要
modeの指定
COMPATモード
– 移行前のバージョンへのフォール・バック可
– V7.0.1の新機能(キュー共用グループUR,ログの圧縮)は利用不可
NEWFUNCモード
– 移行前のバージョンへのフォール・バック不可
– V7.0.1の新機能(キュー共用グループUR,ログの圧縮)を利用可能
– 新機能で問題が見つかった場合 ⇒OPMODE=(COMPAT,701) を設定することで新規機能をオフにできる
(ただし、移行前のバージョンへのフォールバックは不可)
67
移行
velificationLevelの指定
パラメータ・モジュールのバージョン/リリース・レベルの指定
パラメータ・モジュールの生成時に使用するCSQ6SYSP
マクロのバージョン/リリース・レベルの確認
⇒一致しない場合は、生成時にエラーが報告される
modeのCOMPAT指定と共に使用
OPMODE=(COMPAT,vrm) 指定の意味
リリース
vrm 以前に導入された機能のみが使用可能
ただし、vrm が現在のコード・リリースと一致する場合は例外 ⇒ vrm で導入された新規機能は使用
できない
VerificationLevel がキュー・マネージャーのコード・レベルと一致しない場合
⇒強制的に OPMODE=COMPAT が設定される
OPMODE=NEWFUNC
を不注意に設定して取り消し不能になることを防ぐため
– 旧バージョンのパラメータ・モジュールを新バージョンでそのまま使用した場合に発生する可能性がある
DISPLAY SYSTEMコマンドでフォールバック可能な移行元バージョンが表示される
MQMA DISPLAY SYSTEM
MQMB DISPLAY SYSTEM
CSQJ322I MQMA DISPLAY SYSTEM report
CSQJ322I MQMB DISPLAY SYSTEM report
Parameter
Parameter
Initial value
Initial value
----------- ----------------------
----------- ----------------------
OPMODE
OPMODE
COMPAT
, 700
.....
......
68
COMPAT
, 600
Fly UP