...

概説 アジェンダ

by user

on
Category: Documents
44

views

Report

Comments

Transcript

概説 アジェンダ
WebSphere Message Broker v6.1
概説
アイ・ビー・エム システムズ・エンジニアリング株式会社
2008年3月31日
アジェンダ
WMB(WebShere Message Broker)の位置付け
アプリケーション連携の実装
サポートする通信プロトコル
サポートするデータ・フォーマット
システム・コンポーネント
開発物
メッセージ・フロー
メッセージ定義
データ・フォーマットの変換の実装
その他の主な機能
構成例、メッセージ・フロー例
パフォーマンス
2
WMBの位置付け
WMB(WebSephere Message Broker)の位置付け
通信プロトコル、データ・フォーマット、コードページの異なるアプリケーションを連携するための基盤
異種アプリケーションが連携するために必要な変換ロジックを集中管理
„ブローカーにアプリケーションを接続すれば、接続済みの他アプリケーションと連携可能
−−> N:Nのアプリケーション連携を実現
EISシステム
ファイル・アプリケーション
SAP、Siebel、People Soft、
Oracle E-Commerce, JDEdwards)
CSV/FTP
ブローカー
・通信プロトコルの変換
・データ・フォーマットの変換
・制御の変換
JMSアプリケーション
XML/MQ
SOAP/HTTP
Webサービス
アプリケーション
SOAP/JMS
Webサービス
アプリケーション
CWF/MQ
MQアプリケーション
(データ・フォーマット/通信プロトコル)
3
<ノート>
WebSphere Message Broker(WMB)は、アプリケーション統合のインフラとなるEnterprise Service Bus(ESB)を構築するためのミドルウェ
アです。大規模システムをService Oriented Archtecture (SOA) で構築するときに必要不可欠なシステムです。
WMBが提供するブローカーは、通信プロトコル/データ・フォーマット/コードページが異なるアプリケーションの間に入って、異種アプリケーションを連
携するために必要となる各種の変換を行います。
アプリケーションが連携するために必要な変換ロジックを集中管理できるので、新規に作成したアプリケーションはブローカーに接続している既存
アプリケーションと容易に連携できます。
4
WMBでのアプリケーション連携の実装
アプリケーション連携に必要な各種変換の実装
通信プロトコル、データ・フォーマット、制御の変換を提供部品、汎用パーサーを使って実装
−−> 開発生産性の向上
Webサービス
アプリケーション
SOAP/HTTP
(リクエスト/リプライ)
CWF/MQ
(一方向型)
MQアプリケーション
<msg><data><elm01>aaa</elm01><elm02>bbb ・・・ </msg>
データへの統一的なアクセス方法の提供
(XMLデータ以外にもパーサーを提供)
・メッセージ定義に基いて、データのパース/組み立て
・物理属性を削除して
論理的なツリー構造のメッセージにデータを展開
・メッセージ・ツリーへのアクセス言語(ESQL)を提供
MQMD
Root
aaa
bbb
・・・
メッセージ・ツリー
Properties
ヘッダー類
データ
データの組み立て
データのパース
ESQLでアクセス
通信プロトコル、データ・フォーマット、制御の変換
データ・フォーマット変換
・変換、制御ロジックをメッセージ・フローに実装
・提供部品を使ってGUIで開発
代替応答の返却
(制御の変換)
データの内容に基づく処理分岐
(制御フローの実装)
通信プロトコルの変換
5
<ノート>
WMBでアプリケーションを連携するとき、メッセージ・フロー、メッセージ定義を開発します。メッセージ・フロー、メッセージ定義にアプリケーションの
連携に必要となる各種の変換ロジックを実装します。
新規に作成したWebサービス・アプリケーションと既存のMQアプリケーションを連携するケースを例にして、各種の変換ロジックの実装イメージを
説明します。
新規のWebサービス・クライアントはHTTPで通信します。既存のMQアプリケーションと通信するためには、通信プロトコルの変換が必要です。
WMBは各種の通信プロトコルをサポートするプロセス・ノードと呼ばれる部品を提供しています。入口にHTTPノード、出口にMQOutputノード
を配置したメッセージ・フローを作成すると、HTTPからMQへの通信プロトコルの変換が実装できます。
HTTP通信はリクエスト/リプライ型の通信です。既存のMQアプリケーションが一方向型通信だった場合(リプライを返さないアプリケーションだった
場合)、メッセージ・フローからWebサービス・クライアントに代替応答を返す必要があります。メッセージ・フローにHTTPReplyノードを配置すると
代替応答を返却できます。このような制御の変換もメッセージ・フローに実装します。
Webサービス・アプリケーションはXMLでデータを送受信します。既存のMQアプリケーションがC構造体のようなデータ(CWF: Custom Wired
Format)を受信するのであれば、データ・フォーマットの変換が必要です。WMBはデータを物理表現と内容に分離し、「メッセージ定義の開発」
と「内容の組み換えロジックの開発」 の2段階でデータ・フォーマットの変換ロジックを実装します。
メッセージ定義はデータのフォーマットを定義したもので、データの物理表現を含んでいます(例えば、CWFの文字列フィールドであれば「10バイト
の固定長」、「右寄せ」、「空白文字でパディング」などが物理表現です)。メッセージ・フローはデータを受信するとメッセージ定義に基づいてデー
タから物理表現を削除し、データの内容だけをメッセージ・ツリーに展開します。逆に、メッセージ・フローからデータを送信するときは、メッセージ定
義からメッセージ・ツリーに物理表現を付与してデータの組み立てを行います。
メッセージ・フローにComputeノードを配置してメッセージ・ツリーを組み替えるロジックを実装すると、データのフォーマット変換が行えます。開発
者は、(データの物理表現を意識せず、)データの論理的な内容を意識するだけで、フォーマット変換のロジックを開発できます。
アプリケーションの連携基盤として、WMBを使うと開発生産性、メンテナンス性が向上します。
(1) アプリケーションの連携に必要な各種の変換ロジックをGUI部品の組み合わせで開発できる
(2) テスト済みの部品を組み合わせて実装するため、テスト工数を削減できる
(3) 各種パーサーを提供し、データの内容だけを意識してデータの変換ロジックを開発できる
(XMLパーサーによってXMLアプリケーションの開発生産性が向上するのと同様です。WMBは様々なフォーマットに対してパーサーを提供し、
フォーマット変換ロジックの開発生産性を向上させます。)
6
通信プロトコル
その他のサポート通信プロトコル
サポート対象の主要な通信プロトコル
MQEveryplace、SCADA、JMS(IP)
MQ、JMS、HTTP/HTTPS、FTP*、SMTP*、
EIS*(SAP、People Soft、Oracle E-Commerce**, JDEdwards**)
* クライアント機能を提供
** Fixpackで対応予定
サポート対象外の通信プロトコルにはアダプターで対応
アプリケーション、または、プラグイン・ノードでアダプターを実装
プラグイン・ノード
何らかの処理を行う自作の部品
ファイル・アプリケーション
メール・サーバー
FTPサーバー
SMTP
FTP
EISシステム
SAP、Siebel、People Soft、
Oracle E-Commerce, JDEdwards)
ブローカー
EJBアプリケーション
IIOP
プラグイン
(EJBクライアント)
MQ
JMS
EJBアプリケーション
(MDB)
Webサービス
アプリケーション
MQアプリケーション
HTTPs
7
<ノート>
WMBは、MQ、JMS、HTTP/HTTPS、FTP、SMTPの通信プロトコルをサポートしています。FTP、SMTPはクライアント機能だけを提供します。
また、SAP、People Soft、Oracle E-Commerce, JDEdwardsのEISシステムにクライアント機能を使用して接続することが可能です。
※Oracle E-Commerce, JDEdwardsへの接続機能は、fixpacで提供予定です。サポート状況の最新情報は下記のリンクを参照してください。
http://www-306.ibm.com/software/integration/wbimessagebroker/requirements/
上記以外の通信プロトコルを使用する場合は、該当プロトコルをWMBがサポートする通信プロトコル(例えば、MQ)に変換するアプリケーションを
開発する必要があります。あるいは、プラグイン・ノードを開発することでも対応できます。プラグイン・ノードは、ユーザー自作の部品で、WMBが標
準提供している部品と一緒に、ブローカー上で実行できます。
8
データ・フォーマット
サポート対象のデータ・フォーマット
ワイヤード・フォーマット(CWF:Custom Wired Format)
„CやCOBOLアプリケーションなどが扱う構造体イメージのデータ
MQ太郎 千葉市美浜区中瀬1-1
19780726 ・・・
タグ・区切り文字フォーマット(TDS:Tag Delimitter String)
„SWIFT、EDIFACTなどの業界標準が採用.CSV(Comma
Separated Values)もTDSの一種
NAME:MQ太郎*ADDRESS:千葉市美浜区中瀬1-1*BirthDay:1978||・・・
XML
„XML1.0、XML1.1をサポート.ネームスペース付XML、SOAPにも対応
<Customer><Name>MQ太郎</Name><Adress>千葉市美浜区・・・
その他
„MIME(SOAP
with Attatchmentを含む)、
JMSMap、JMSStream、SAP IDoc、バイナリをサポート
9
<ノート>
WMBは、以下の様々なデータ・フォーマットを扱う(分解/組み立てを行う)ことができます。
ワイヤード・フォーマット:
C言語やCOBOLなどが扱う構造体イメージのデータ。
固定長文字列フィールド、可変長文字列フィールド、数値フィールド、バイナリ・フィールドなどで構成されているデータ
タグ・区切り文字フォーマット
タグや区切り文字を使って個々のフィールドが区切られているデータ。
SWIFT、EDIFACTなどの業界標準として採用されていることが多いデータ・フォーマット。カンマ区切りのCSVもTDSの一種
XML
XML1.0、XML1,1をサポート。ネームスペース付XMLにも対応。XMLフォーマットであるSOAPも扱うこととが可能
その他、SwA(SOAP with Attachement)を含むMIMEフォーマット、JMSが扱うJMSMap、JMSStream、SAPのIDOCデータを扱うことができ
ます。また、データをフィールドに分解する必要がなければ、データ全体を1つのバイナリとして扱うこともできます。
10
システム・コンポーネント
システム・コンポーネント
メッセージ・ブローカー・ツールキット
メッセージ・ブローカー
ツール・キット
リポジトリ(オプション)
構成マネージャー
ブローカー・ドメイン
ブローカー
ユーザー・ネーム・サーバー(オプション)
リポジトリ
(オプション)
※WMBが提供している
コンポーネントではない
ユーザー・ネーム・サーバー
(オプション)
構成マネージャー
開発環境
実行環境
ブローカー
実行グループ
アプリケーション
アプリケーション
アプリケーション
アプリケーション
稼動プラットフォーム
コンポーネント
サポート・プラットフォーム
ブローカー
構成マネージャー
ユーザー・ネーム・サーバー
AIX、Solaris(x86-64、SPARK)、HP-UX(Itanium、PA-RISK)、
Linux(x86、x86-64、Power、zSeries)、Winsows、z/OS
メッセージ・ブローカー・ツールキット
Windows、Linux/x86
11
<ノート>
WMBのシステム・コンポーネントは、開発環境/実行環境の2つに大きく分かれて配置されます。
開発環境では、ツールキットを使ってメッセージ・フロー、メッセージ定義を開発します。開発したメッセージ・フロー、メッセージ定義は、コンパイルして
ブローカー・アーカイブ・ファイル(BARファイル)にパッケージングし、構成マネージャーを通じて実行環境であるブローカーにデプロイします。
開発環境には、オプションでリポジトリを配置できます。リポジトリは、複数ユーザーが共同でメッセージ・フロー、メッセージ定義を開発するとき、
開発物を一元管理するためのコンポーネントです。
開発環境
メッセージ・フロー
実行環境
ブローカー・アーカイブ・ファイル
メッセージ・セット
構成マネージャー
コンパイル&パッケージング
ブローカー
デプロイ
実行環境には、メッセージ・フローの実行環境となるブローカーを配置します。ブローカーの構成管理(メッセージ・フロー、メッセージ定義のデプロイな
ど)は、構成マネージャー経由で行います。構成マネージャーが構成管理を行っている範囲がブローカー・ドメインです。 ブローカー・ドメインには、複
数のブローカーを配置できます。
ユーザー・ネーム・サーバーも実行環境に配置するコンポーネントですが、オプション扱いです。「Publish/Subscribe通信で高度なセキュリティ管理
を行う」という特殊な要件があるときにだけ配置します。
12
システム・コンポーネントの詳細
メッセージ・ブローカー・ツールキット
EclipseベースのGUI開発ツール
ツールキットから行う主な作業
メッセージ・フロー、メッセージ定義の開発/デバッグ
ブローカー・ドメインの構成定義
・実行グループの作成/削除
・開発物のコンパイル&パッケージング、デプロイ
・メッセージ・フロー、メッセージ定義の除去
„稼動状況の表示
・実行グループ、メッセージ・フローの開始/停止
・稼動状況の表示
„
„
リポジトリ
ツールキットは各々のマシーンのローカル・ファイル・システムに開発物を保存
−−> 複数ユーザーの開発で、開発物の一元管理を行うときはリポジトリを使用
„Eclipseのプラグインとして、一般的に提供されている製品を別途入手
開発規模
CVS (OpenSource Sorfware)
費用
サポート
無料
なし (コミュニティのみ)
ClearCaseLT (Rational)
中
製品として提供
パスポート・アドバンテージ
ClearCase (Rational)
大
製品として提供
Rationalブランド
小・個人
13
<ノート>
メッセージ・ブローカー・ツールキットは、メッセージ・フロー、メッセージ定義を開発で使用するEclipseベースのGUIツールです。また、ツールキットは、
ブローカー・ドメインの管理コンソールの役割も持っています。ブローカーに実行グループ(後述)を作成したり、開発したメッセージ・フロー、メッセージ
定義をコンパイル&パッケージングして、ブローカーにデプロイします。メッセージ・フローの稼動状況、開始/停止などの操作も行えます。
リポジトリは、複数ユーザーが共同でメッセージ・フロー、メッセージ定義を開発するとき、開発物を一元管理(ファイルの保管、排他制御などを提
供)するためのコンポーネントです。
WMBにはリポジトリ製品は付属していませんので、CVS、ClearCaseなどのEclipseから使用可能なリポジトリ製品を別途入手する必要があり
ます。
14
システム・コンポーネントの詳細
構成マネージャー
ツールキットからの操作要求に従って、ブローカー・ドメインの実際の構成定義作業を実行
ブローカー・ドメインの構成情報を保持
„Apache
Derbyを内包
ブローカー
メッセージ・フローの実行環境(実行グループ)の構成・管理を行う
„デプロイされたメッセージ・フローをDataFlowEngineプロセス(実行グループ)のスレッドで実行
„32ビット版、64ビット版のDataFlowEngineプロセスを提供
デプロイされた構成定義、開発物をブローカー・データベースに保存
„構成マネージャーと切り離されても単独で稼動可能
ブローカー(bipservice、bipbroker)
実行グループ(DataFlowEngine)
メッセージ・フロー1
メッセージ・フロー1
ブローカー・データベース
(DB2、Oracle、Syabase、SQLServer)
メッセージ・フロー2
実行グループ(DataFlowEngine)
ユーザー・ネーム・サーバー
メッセージ・フロー1
PubSub通信でのセキュリティ管理
„トピックにアクセスできるユーザー(パブリッシャー、サブスクライバー)を制限
15
<ノート>
構成マネージャーは、メッセージ・ブローカー・ツールキットからの操作要求(実行グループの作成、開発物のデプロイ、メッセージ・フローの稼動状況
確認など)をブローカー・ドメインに対して実行します。
構成マネージャーは、ブローカー・ドメインの構成情報を保存しておくためにApache Derbyを使っています。
ブローカーは、メッセージ・フローの実行環境である実行グループを管理します。
実行グループが親プロセスとなり、メッセージ・フローをスレッド実行します。ブローカーには複数の実行グループを定義できます。また、1つの実行グ
ループで複数のメッセージ・フローを実行することが可能です。ブローカーは、構成マネージャーからデプロイされたメッセージ・フロー、メッセージ定義
をデータベースに保存しておき、構成情報にしたがって、実行グループ上でメッセージ・フローを実行します。
ブローカーは、メッセージ・フロー、メッセージ定義の保存、「実行グループが何個あるか、どの実行グループでどのメッセージ・フローを実行するか」な
どの構成情報を保存しておくためにデータベース(ブローカー・データベース)を使います。
ブローカー・データベースとしてDB2、Oracle、Sybase、SQLServerが利用できます。WMBにはブローカー・データベースでの利用に制限された
制限付DB2ライセンスが付属しています。
ユーザー・ネーム・サーバーは、PubSub通信でのセキュリティ管理を行うコンポーネントです。トピックにアクセスできるユーザーを制限します。
16
メッセージ・フロー
メッセージ・フロー
データの処理フローをGUIで記述したもの
„データ・フォーマット、通信プロトコル、制御の変換ロジックの実装
製品が提供するプロセス・ノードの動作をカスタマイズ
„プロパティの設定、ESQLの組み込み
など
カスタマイズしたプロセス・ノードを接続して処理フローを作成
„データの内容や操作結果に基づいた処理分岐
など
プロパティ
ターミナル 接続
プロセス・ノード
入力ノードが処理の開始点
入力ノード : キューからメッセージをMQGETするMQInputノードなど
17
<ノート>
メッセージ・フローは、データの処理フローをGUIで記述したものです。データ・フォーマット、メッセージ・フローには、通信プロトコル、制御の変換など
のロジックを実装します。
製品が提供するGUI部品(プロセス・ノード)を接続して、データの内容や操作結果に基づいた処理分岐など、データの処理フローを作成します。
個々のプロセス・ノードはプロパティで動作をカスタマイズできるようになっています。例えば、MQGETを行うMQInputノードには、キュー名や同期点
処理を行うかなどのプロパティがあります。
メッセージ・フローは、データの到着をトリガーに処理を開始します(Timerノードによるスケジュール実行は例外.詳細は後述)。このため、メッセー
ジ・フローの開始点は、入力ノードと呼ばれるデータを受信するプロセス・ノードになります。
18
メッセージ・フロー
ESQL
WMBが提供するスクリプト言語
„SQL
Version3をベースに、メッセージ・ツリーとデータベースの両方の操作を行えるように拡張
プロセス・ノードに組み込んでメッセージ・ツリーやデータベースをアクセス
„メッセージ・ツリーの参照、更新(フィールドの追加、削除、値の更新、並べ替え
など)
„データベースの参照、更新
19
<ノート>
ESQLは、WMBが提供するスクリプト言語です。SQLv3をベースにデータベースだけでなく、メッセージ・ツリーの操作(エレメントの追加/削除/値の
変更)を行えるように拡張されています。
プロセス・ノードに組み込んで、メッセージ・ツリーやデータベースの参照・更新を行います。
20
メッセージ・フロー
プロセス・ノード
メッセージ・フローに組み込まれ、何らかの処理を行う部品
„実体は共有ライブラリ.メッセージ・フローの実行スレッドから逐次コールされて処理を実行
製品が提供する主なプロセス・ノード
„
通信プロトコル・サポート
MQ
MQInput、MQOutput、MQGet、MQReply
JMS
JMSInput、JMSOutput
SOAP
SOAPInput、SOAPReply、SOAPRequest、SOAPAsyncRequest、SOAPAsyncRequest
HTTP
HTTPInput/HTTPReply、HTTPRequest
FTP
FileInput、FileOutput
EIS
SAPInput、SAPRequest、PeopleSoftInput、PeopleSoftRequest、SiebelInput、SiebelRequest
„メッセージ・ツリーへのアクセス(メッセージの変換)、データベースへのアクセス
メッセージの変換
Compute、JavaCompute、Mapping、XMLTransform
データベース・アクセス
Database、DataUpdate、DataInsert、DataDelete、Warehouse、DatabaseRetrieve
„処理フロー制御
処理分岐
Filter、RouteToLabel/Label、Route、DatabaseRoute
集約
AggregateControl/AggregateRequest/AggregateReply、Collector
21
<ノート>
プロセス・ノードは、WMBが提供するメッセージ・フローを作成するためGUI部品(プロセス・ノード)です。実体は共有ライブラリで、メッセージ・フロー
の実行スレッドから順次呼び出されて処理を実行します。
MQGET WAIT
処理分岐
メッセージの組み換え
実行スレッド
MQPUT
メッセージのパース
メッセージの組み立て
WMBが提供する主なノードとして下記があります。
(1) 通信プロトコル
(2) メッセージの変換
(3) データベースのアクセス
(4) 処理フロー制御
外部システムとのデータの送受信をサポートするノード
XML−>CWFのようなデータフォーマットの組み換えを行うノード
ユーザー・データベースへの入出力。WMBを経由したデータからデータ・ウェアハウスを構築するなどで利用
処理分岐を行ったり、複数メッセージを1つにまとめたりといったロジックを実装するためのノード
この他にも、エラー・ハンドリングの実装で使用されるTryCatchノード、Traceノード、Throwノードなどもあります。
22
標準提供のプロセス・ノード
役割
外部インターフェース
メッセージ変換
データベース・アクセス
<参考>
ノード名
説明
MQInput/MQOutput
MQとの入出力
MQGet
メッセージ・フローの途中でMQGET
MQReply
MQOutputのサブセット.MQMD.ReplyToQにメッセージ送信
JMSInput/JMSOutput
JMSプロバイダーとの入出力
FileInput/FileOutput
ファイルの入出力。FTP通信も可能(FTPクライアント機能)
EmailOutput
メールの出力(SMTP)
SCADAInput/SCADAOutput
SCADA端末との入出力
HTTPInput/HTTPReply/HTTPRequest
HTTPとの入出力
SOAPInput/SOAPReply/SOAPRequest
SOAPAsyncRequest/SOAPAsyncReponse
WevServiceとの入出力
SAPInput/SAPRequest
PeopleSoftInput/PeopleSoftRequest、
SiebelInput/SiebelRequest
SAP、PeopleSoft、Siebelとの入出力
Publication
PubSub通信.MQ、MQEveryPlace、SCADA端末にメッセージ送信
RealtimeInput
JMS(IP)通信(入力)
MQOptimaizeFlow、RealTimeOptimizeFlow
それぞれ、「MQInput + Publication」、「RealtimeInput + Publication」に相当
Compute
ESQLによる変換、データベース・アクセス(汎用)
Java Compute
Javaによる変換
Mapping
GUIマッピングによる変換、データベース・アクセス(読み込みのみ)
XMLTransform
XSLTによる変換
JMSMQTransform、MQJMSTransform
JMSメッセージとMQメッセージの変換
Database
ESQLによるデータベース・アクセス(汎用)
DatabaseRetrieve
データベースの照会結果をメッセージ・ツリーにセット(読み込みのみ)
DataDelete/DataInsert/DataUpdate/Warehouse
GUIマッピングによるデータベース・アクセス
(互換性のために違う名前で残されているだけで、処理内容は同一)
23
標準提供のプロセス・ノード
役割
フロー制御
エラー処理
その他
ノード名
<参考>
説明
Filter
ESQLによる条件判断で処理を分岐
RouteToLabel/Label
Labelノードに処理を移動/処理の移動先
Route
XPATH式による条件判断で処理を分岐
DatabaseRoute
データベースの照会結果に対して、XPATH式による条件判断で処理を分岐
AggregateControl/AggregateRequest/AggregateReply
Aggregator機能(複数宛先への要求送信、応答メッセージを待ち受けて合体)
Collector
複数のメッセージを待ち受けて、1のメッセージに集約
TimeoutControl、TimeoutNotification
メッセージ・フローのスケジュール実行
FlowOrder
分岐フローの実行順序制御
Throw
例外の生成
TryCatch
例外の補足
Trace
メッセージのダンプ
ResetContentDescriptor
Input/Output
メッセージ・パーサーの変更(メッセージの再パース)
サブ・フローの作成(サブ・フローへの開始点/サブフローの出口点)
PassThrough
サブ・フローにバージョンなどの識別子を設定(メッセージへのアクションはない)
Validate
メッセージとメッセージ定義の妥当性検査
24
メッセージ定義
メッセージ定義
CWF、TDSではデータのパース/組み立てのためにメッセージ定義の作成が必要
„データにデータ構造を含まないため、外部から与える
(データ構造を含むXMLではメッセージ定義の作成はオプション)
メッセージ
複合タイプ
エレメントを積み上げて、データの論理構造を定義
„タイプ:データの型、エレメント:タイプのインスタンス
エレメント
エレメント
„複合タイプ
複合タイプ
複合タイプ
(エレメントの集合、構造体のイメージ)
個々のエレメントにビットストリームでの表現方法(物理表現)を設定
„設定項目は、物理フォーマット種別(CWF、TDS、XML)ごとに異なる
エレメント
エレメント
単純タイプ
単純タイプ
データの論理構造を作成
個々のエレメントの物理表現を設定
StringタイプのCWFの物理属性例
・固定長xxxバイト/可変長(長さ付き)/可変長(null終端)
・左寄せ/右寄せ
・パディング文字
25
<ノート>
メッセージ定義には、データの分解/組み立てのために必要となる情報として、データ構造を定義します。例えば、先頭10バイトが「顧客ID」、続く
20バイトが「顧客名」のようなデータの解釈方法(フィールドの区切り方)を定義します。
CWFやTDSでは、データの分解/組み立てのためにメッセージ定義を使ってデータ構造を与える必要があります。XMLはデータ自体にデータ構造
の情報を含むため、メッセージ定義の開発はオプション扱いです。
メッセージ定義は、論理構造、物理表現の2段階で開発します。
論理構造は、String、Integerなどの単純タイプに名前をつけてインスタンス化し、単純エレメントにします。単純エレメントをまとめてユーザー独自
のタイプ(複合タイプ)を作成することも可能です。同じエレメントが複数回出現する繰り返し構造も、論理構造として定義します。単純エレメント、
複合エレメントを積み上げて、メッセージを作成します。
次にメッセージの個々のエレメントにビットストリームでの表現方法(物理表現)を設定します。設定項目はCWF、TDS、XMLで異なります。
例えば、CWFでは、Stringエレメントに対して
・固定長xxxバイト/可変長(長さ付き)/可変長(null終端)
・右寄せ/左寄せ
・文字数が足りなかったときのパディング文字
のような項目を設定します。
26
メッセージ定義
メッセージ定義のインポート生成
以下の既存のリソースをインポートしてメッセージ定義を生成することが可能
„C言語のヘッダー、COBOLコピー句
„XMLスキーマ、XML
DTD
„WSDL
27
<ノート>
ツールキットは、C言語のヘッダー、COBOLコピー句、XMLスキーマ、DTD、WSDLファイルを読み込んでメッセージ定義を生成するインポーターを
提供しています。これらのファイルを既存でもっていれば、メッセージ定義を生成することが可能です。
28
データ・フォーマットの変換
ブローカーは、物理メッセージ <−> 論理メッセージの変換を自動で行う
データ受信時、メッセージ定義に従ってデータから物理表現を削除、ツリー構造の論理メッセージに変換(パース)
ルーティング実行時に、メッセージ定義に従って論理メッセージに物理表現を付与(組み立て)
−−> メッセージ・フローで論理メッセージを組み替えるだけで、データ・フォーマットの変換が可能
MQ太郎 千葉市美浜区中瀬1-1
<Customer><Name>MQ太郎</Name><Adress>千葉市美浜区・・・
パース:物理表現の削除
フィールドの追加/削除/値の変更/並び替え
19780726 ・・・
組み立て:物理表現の付与
Root
Properties
ヘッダー
MessageSet
MessageType
(Domain)
Customer
Name
Address
メッセージ・ツリー(論理メッセージ)
論理メッセージの組み換えに4つの方法を提供
ESQL、GUIマッピング、Java、XSL
29
<ノート>
メッセージ・フローは、メッセージを受信すると、メッセージ定義にしたがって物理表現を削除し、データをツリー構造の論理メッセージに変換します。
データは、メッセージ・フロー内を論理メッセージ・ツリーの状態で流れていきます。メッセージ・フローからメッセージ・ツリーが出力される直前で、再び、
メッセージ定義にしたがって物理表現が付与され、ルーティングが実行されます。
メッセージ・フローの開発者はデータの物理表現を意識せず、メッセージ・ツリーを組み換えるだけで、データのフォーマット変換が行えます。
メッセージ・ツリーの組み換えには、ESQL、GUIマッピング、Java、XSLが使えます。
30
論理メッセージの組み換え
ESQL
ESQLでメッセージを組み換えるときは、Computeノードを使用
入力ツリー(InputRoot)を参照しながら、出力ツリー(OutputRoot)を組み立てる
CREATE COMPUTE MODULE msgflow01_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();
エレメントへのアクセスは、ツリー階層をドット( . )区切りで辿る
SET OutputRoot.Properties.MessageSet = ‘MSGSET01’;
SET OutputRoot.Properties.MessageType = ‘MSG01’;
SET OutputRoot.Properties.MessageFormat = ‘CWF’;
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputBody.CustomerInfo.Items[]);
WHILE I <= J DO
SET OutputRoot.MRM.CustomerInfo.Items[>I].CustomerId = ‘AA’ || InputBody.CustomerId[>I].”;
SET OutputRoot.MRM.CustomerInfo.Items[>I].”CustomerName” = InputBody.CustomerName[>I];
:
SET I = I + 1;
END WHILE;
:
31
<ノート>
ESQLでメッセージ・ツリーの組み換えを行うときはComputeノードを使用します。
Computeノードには、前方のノードが出力したメッセージ・ツリーがInputRootの名前で渡されます。InputRootを参照しながら出力用の
OutputRootの名前のメッセージ・ツリーを作成します。
※ESQLは構造化言語ですので、C、VBなどの開発言語を習得している方であれば、難しくはありません。
32
論理メッセージの組み換え
GUIマッピング
GUIマッピングでメッセージを組み換えるときは、Mappingノードを使用
出力メッセージのエレメントに、入力メッセージのエレメントや計算式をマッピング
マッピングの実行条件、繰り返し実行のロジックも記述可能
単純なマッピングならエレメントを
ドラッグ&ドロップするだけ
エレメントにESQL関数、XPath関数での計算結果をマップ
スクリプト・エディター.
マッピングの実行条件(if)、
繰り返し処理(for)などを記述
33
<ノート>
GUIでメッセージ・ツリーの組み換えを行うときはMappingノードを使用します。
出力メッセージのエレメントに入力メッセージのエレメントや計算式をマッピングします。単純なエレメントのマッピングなら、エレメントをドラッグ&ドロッ
プするだけです。ESQL関数やXPATH式の演算式を設定し、計算結果をマッピングすることもできます。
スクリプト・エディターでは、マッピングの実行条件(IF文)を設定し、特定の条件を満たしたときのみマッピング値を変えることも可能です。繰り返し項
目を処理するためのfor文も記述することができます。
34
論理メッセージの組み換え
Javaコード
Javaコードでメッセージを組み換えるときは、JavaComputeノードを使用
メッセージ・ツリーにアクセスするためのJavaクラスを提供
„DOMに似た構文でメッセージ・ツリーにアクセス
XPathでのアクセスもサポート
„XPathはread-onlyの照会言語.出力用メッセージを操作(エレメントの作成・変更)するための構文を追加
public class java_simple_javaCompute extends MbJavaComputeNode {
:
XPath拡張構文
MbXPath xp2 = new MbXPath(“/?$msg01/?$elm01[set-value(‘” + str + “’)]”);
outMessage.evaluateXPath(xp2);
スタイル・シート
XSLでメッセージを組み換えるときは、XSLTransformノードを使用
コンパイル済みスタイル・シートをキャッシュして高速にXMLデータを変換
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:xalan="http://xml.apache.org/xslt">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:value-of select="message"/>
</xsl:template>
</xsl:stylesheet>
スタイル・シートで変換するとき、入力データ、
出力データの両方がXMLでなければならない
35
<ノート>
JavaComputeノードを使用して、Javaコードでメッセージ・ツリーを組み替えることも可能です。メッセージ・ツリーにアクセスするためのJavaクラスを
提供します。また、メッセージ・ツリーにはXPathでアクセスすることも可能です。
また、XMLデータのフォーマット変換に限定されますが、スタイル・シートを使って変換することも可能です。XMLTransformノードを使用します。
36
その他の主な機能
Webサービス・サポート
JMSプロバイダーへのアクセス
データベース・アクセス
EIS連携
ファイル連携
トランザクション・サポート
スケジュール実行
Collectorフロー
Aggregationフロー
Publish/Subscribe通信
Javaでの開発
XMLツール
デバッガー
コード変換テーブルのカスタマイズ
統計レポート
37
38
Webサービス・サポート
Webサービス・アプリケーションをブローカーに接続
SOAP/HTTP(s)、SOAP/JMSをサポート
„複数のWebサービス・プロバイダーを連携し、新規のWebサービス・プロバイダーとして公開
„既存アプリケーションとWebサービス・プロバイダー、Webサービス・リクエスターの連携
複数のWebサービスを連携し、新しいWebサービスとして提供
Webサービス・プロバイダー
SOAP/JMS
Webサービス・プロバイダー
Webサービス・プロバイダー
SOAP/JMS
ブローカー
Webサービス・リクエスター
SOAP/HTTP
SOAP/HTTP
Webサービス・リクエスター
既存のアプリケーションをWebサービス・プロバイダーとして公開
既存のアプリケーションからWebサービス・リクエスターにアクセス
Webサービス・プロバイダー
Webサービス・プロバイダー
SOAP/JMS
Webサービス・プロバイダー
MQアプリケーション
SOAP/JMS
ブローカー
ブローカー
Webサービス・リクエスター
SOAP/HTTP
CWF/MQ
CWF/MQ
MQアプリケーション
Webサービス・リクエスター
SOAP/HTTP
Webサービス・リクエスター
39
Webサービス・サポート
Webサービス関連の標準技術への対応
SOAP1.1 / SOAP1.2
SOAP Binding for MTOM 1.0
SOAP MTOM
WSDL v1.1
WSDL1.1 Binding Extension for SOAP 1.2
WS-I Basic Profile v1.1
WS-I Simple SOAP Binding Profile V1.0
XML-Binary Optimised Packaging (XOP)
XML-Encryption Syntax and Processing
XML-Signature Syntax and Processing
WS-*関連は一部のみサポート
WS-Addressing
WS-Security
40
Webサービス・サポート
Webサービス連携用メッセージ・フローをWSDLから生成
雛形が生成されるので、ユーザー・ロジックの追加を行う
„バインディング、サービス、ポート情報などをWSDLから取得して、ノードのプロパティに自動設定
自動生成されたプロバイダー用フローの雛形
ユーザーロジック
の実装
サブフロー
自動生成されたリクエスター用フローの雛形
ユーザーロジック
の実装
ユーザーロジック
の実装
WSDLをドラッグ&ドロップ
ウィザードで、作成するメッセージ・フローの動作タイプ
(リクエスター、プロバイダー)、使用するノードを選択
41
Webサービス・サポート
Webサービスの非同期呼び出し
サービス・プロバイダーからの応答を待たずに、次の処理を実行可能
„WS-Addressingを使用
Webサービス・プロバイダー
要求送信と応答受信を平行実行
−−> リソース消費を抑えて(スレッド数を抑えて)、スループットを向上
SOAP/JMS
ブローカー
サービス・
プロバイダー
CWF/MQ
MQアプリケーション
Webサービス・リクエスター
0.1秒
0.8秒
0.1秒
サービス・プロバイダーから応答が返るまで、次のメッセージの処理は待たされる。
処理時間の内訳が上図の場合、100件/秒を処理するためには、メッセージ・フローを100スレッドで実行
サービス・
プロバイダー
WS-Addressing
0.1秒
0.1秒
サービス・プロバイダーから応答を待たず(要求の送信が完了すると)、次のメッセージを処理。
処理時間の内訳が上図の場合、100件/秒を処理するためには、メッセージ・フローをそれぞれ10スレッド(計20スレッド)で実行
42
Webサービス・サポート
WSRR(WebSphere Service Registry and Repository)のサポート
サービスにアクセスするためのアドレス情報、関連情報をWSRRから取得
(これらの情報をメッセージ・フローに持たず、外出しにする)
−−> WSRRでサービスの定義情報を全社的に一元管理
WSRRにアクセスしてサービスの定義情報を照会する2つのノードを提供
„EndpointLookupノード
Webサービスのアドレス情報(HTTP通信の場合、URLなど)の取得
„RegistryLookupノード
スタイル・シートをサービス文書として登録し、フォーマット変換ロジックをメッセージ・フローから排除
パフォーマンス向上のために、照会結果をキャッシュ可能
WSRR
WSRRからフォーマット変換のためのスタイル・シートを取得
サービス・
プロバイダー
WSRRからWebサービスのURLを取得して、Webサービスにアクセス
スタイル・シートを適用してフォーマット変換
43
JMSプロバイダーへのアクセス
メッセージ・フローからJMSプロバイダーに接続
JMS 1.1仕様に準拠する任意のJMSプロバイダーをサポート
„JMSプロバイダーが提供するクラス・ファイル(JRE1.5のサポートが必要)を利用して接続
MQとJMSプロバイダーの中継用に
JMSヘッダー<−>MQヘッダー(MQMD)の変換ノードを提供
MQアプリケーション
JMSアプリケーション
WAS
JMSヘッダー−>MQヘッダー(MQMD)
WMQ
Messaging Engine
(JMSプロバイダー)
JMSヘッダー<−MQヘッダー(MQMD)
44
データベース・アクセス
メッセージ・フローからデータベースの参照・更新が可能
ブローカーを経由で配信したメッセージからデータ・ウェアハウスを構築
データベースの照会結果をメッセージに埋め込んでルーティング
サポート対象のデータベース:
DB2、Oracle、Sybase、SQL Server、Informix
データベースへのアクセスにはESQL、JDBC(JavaComputeノードなど)を利用可能
„ESQLでアクセスする場合は、ODBC接続
ストアード・プロシージャーの呼び出しにも対応
45
データベース・アクセス
GUIマッピングでデータベース操作が可能
マッピングのために、テーブルの定義情報が必要
„ツールキットからデータベースに接続してテーブルの定義情報を取得可能
操作対象のテーブル
<DataDeleteノードでのデータの削除の例>
削除対象レコードの条件
(SQLのWHERE文節)
データベースに接続し、操作対象の
テーブルの定義情報を取得
46
EIS連携
EISへの接続をサポートするJCA 1.5準拠のアダプターを提供
SAP、People Soft、Oracle E-Commerce、JDEdwardsをサポート
(Oracle E-Commerce、JDEdwardsは、fixpackで提供予定)
利用例.EISシステムをサービス・プロバイダーとして公開
Webサービス・プロバイダー
SOAP/JMS
EISシステム
SAP、Siebel、People Soft、
Oracle E-Commerce, JDEdwards)
ブローカー
Webサービス・リクエスター
SOAP/HTTP
利用例.EISシステムとレガシー・システムをMQで連携
Webサービス・リクエスター
EISシステム
SAP、Siebel、People Soft、
Oracle E-Commerce, JDEdwards)
MQアプリケーション
ブローカー
47
EIS連携
EMS(Enterprise Metadata Discovery)の提供
ツールキットをEISシステムへ接続し、ビジネス・オブジェクトを参照してメッセージ定義を自動生成
„ウィザードに従って、必要な項目を入力
<アダプター種別の選択>
<ビジネス・オブジェクトの選択>
<接続情報の入力>
生成されたメッセージ定義
48
上図は、ウィザードの画面の一部を省略しています
EIS連携
EIS連携用メッセージ・フローの作成を補助
ウィザードに従って接続情報を設定し、アダプター・コンポーネントを作成
アダプター・コンポーネントのドラッグ&ドロップでメッセージ・フローを生成
„雛形が生成されるので、ユーザー・ロジックの追加を行う
自動生成されたインバウンド用フローの雛形
ユーザーロジック
の実装
サブフロー
自動生成されたアウトバウンド用フローの雛形
ユーザーロジック
の実装
ユーザーロジック
の実装
可能なオペレーションの選択
ドラッグ&ドロップ
実行時の接続情報
アダプター・コンポーネント
49
ファイル連携
メッセージ・フローからファイルの読み込み、書き出しが可能
ローカルのファイルだけでなく、FTP経由でリモートのファイルにもアクセス可能
„FTPクライアントの機能を提供.FTPサーバーの機能は提供していない
ファイルは一括で扱うことも、レコード単位に扱うことも可能
„読み出し時:
ファイル全体を読み込み、1回のメッセージ・フロー実行で処理
1レコードずつ読み込み、ファイル終端までメッセージ・フローを繰り返し実行
„書き出し時: メッセージ・ツリーを書き出してファイルを閉じる (終端情報は不要)
メッセージ・ツリー(レコード)をファイルに追記し、終端情報を受け取るとファイルを閉じる
使用例. リモートのファイルを1レコードずつ読み出して、MQメッセージに変換
(1)指定されたディレクトリにファイルが書き出されるのを定期的にスキャン
FTPサーバー
MQアプリケーション
(2)ファイルを検出したらローカルにFTP
(4)読み込んだレコードをMQメッセージに変換して出力
WMQ
(3)FTPが完了したらリモートのファイルは削除
(5)処理が終わったファイルはサブ・ディレクトリに移動 (移動ではなく、削除も可能)
50
トランザクション・サポート
メッセージ・フローを1つのトランザクションとして実行
メッセージ・フローからのMQに対する資源更新を1つの作業単位(UOW)で処理
障害発生時のメッセージの消失/重複を排除
MQGET Syncpoint
MQPUT Syncpoint
MQCMIT(または、MQBACK)
グローバル・トランザクションのサポート
MQ、データベース、JMSプロバイダーに対する更新を1つの作業単位(UOW)で処理
„ HTTP、File、EISのようなXAインターフェースを持たないリソースの更新は対象外
MQをコーディネータとした2フェーズ・コミット
JMSプロバイダー
MQGET Syncpoint
SQL.UPDATE
JMS.send(transacted)
MQCMIT(または、MQBACK)
51
スケジュール実行
メッセージ・フローのタイマー実行
外部からのイベント(メッセージの入力など)なしに、タイマー起動でメッセージ・フローを実行
利用例:「定期的にデータベースからデータを抽出して配信」
利用例: 「メッセージ・フローの後処理として、特定の時刻に別のメッセージ・フローを実行」
52
Collectorフロー
N:1のデータグラム通信
複数のメッセージ到着を待ちうけ、1つのメッセージに集約してルーティング
„Collectorノードの入力ターミナルは追加可能。任意の数のシステムからのメッセージをマージ可能
Root
Properties
システム1
Collection
CollectionName
ブローカー
入力ターミナル名
システムA
入力ターミナル名
システム2
Properties MQMD MRM Properties MQMD MRM
システムN
入力ターミナルを追加可能(任意の数)
- Root.Collection配下に入力ターミナル名のフォルダが作成され、入力メッセージが展開される。
- Collectorから出力されたツリーのままではルーティングできない。Computeノードなどでメッセージを編集して出力
様々な集約条件(メッセージが揃ったと判断する条件)を設定可能
キーを使って関連するメッセージを集約する (同一キー値のメッセージを集約する)
後続ノードにメッセージを流すタイミングの設定
in1はmsg1.elm01フィールドを利用.*.txtの*の部分をキー値に採用
in1にメッセージが1つ届く
in2はmsg2.elm02フィールドを利用.*.datの*の部分をキー値に採用
AND
in2にメッセージが3つ届く、OR、10秒間、後続メッセージが届かない
(メッセージが1つも届かないときは条件を満たさない)
53
Aggregationフロー
1:Nの並行リクエスト/リプライ通信
要求メッセージを分解し、複数のサーバー・アプリケーションにMQ経由で送信
−−> MQの非同期通信のメリットを生かして並行実行
複数の応答メッセージを1つに集約した応答メッセージを返信
予約サービスを並行に実行
ホテル予約サービス
旅行予約業務
ブローカー
飛行機予約サービス
サーバー・アプリケーション
クライアント・アプリケーション
サーバー・アプリケーション
54
Publish/Subscribe通信
Publish/Subscribe通信のブローカー.MQが提供するブローカーよりも高機能
コンテンツ・ベースのメッセージ配信
„トピックに加え、メッセージの内容を条件指定(例.Body.FLD01
> 1)してサブスクライブ可能
フォーマット変換したメッセージの配信が可能
„サブスクリプション・ポイントと組み合わせれば、サブスクライバーは任意のフォーマットでメッセージを受信
スケーラビリティ、可用性向上の機能
„階層型・集合型の2種類のブローカー間接続のサポート、クローン・ブローカーのサポート
サブスクリプション・ポイント :
メッセージ配信のPublicationノードを指定する機能
パブリッシャー
サブスクライバー
サブスクリプション・ポイント:CWF
サブスクライバー
サブスクライバー
サブスクリプション・ポイント:XML
サブスクライバー
55
Publish/Subscribe通信
<参考>
Publish/Subscribe通信とは
メッセージに付与されたトピック(情報の種類)をベースにメッセージを配信
サブスクライバー(情報の消費者)は、トピックへのサブスクライブ要求(購読要求)をブローカーに送信
パブリッシャー(情報の提供者)は、トピックを付与したメッセージをブローカーに送信
ブローカーがパブリッシャーとサブスクライバーの仲介を行う
„トピックにサブスクライブしているサブスクライバーにメッセージを配信
パブリッシャー
パブリッシャー
「バイク」
「株価」
ブローカー
サブスクライバー
サブスクライバー
「株価」にサブスクライブ
サブスクライバー
「株価」と「バイク」にサブスクライブ
「バイク」にサブスクライブ
56
メッセージフロー・レベル・セキュリティ
メッセージに埋め込まれたID情報に基づき、メッセージごとのセキュリティ検査が可能
受信メッセージからID情報を取り出し、
セキュリティ・プロファイルに基づいて、外部セキュリティ・プロバイダーで検査を実行
„ID情報は、メッセージの任意の位置から抽出することが可能
„アクセス・ユーザーの認証、メッセージ・フローへのアクセス権限検査(認可)を行う
アクセス・ユーザーを代替ユーザーにマップし、代替ユーザーでアクセス権限の検査を行うことも可能
オリジナルではなく、マップ後のID情報を設定してルーティングすることが可能
Properties
source ID
mapped ID
ID情報
抽出したID情報は、Root.Propertiesに設定されてメッセージ・フローを流れる。
ユーザー側で自由に利用
- ブローカーは、(データベース・アクセスなどで)該当ID情報を利用しない
セキュリティ・プロファイル
TFIM、LDAP
認証
マップ
認可
認証
マップ
認可
マップ後のID伝播
:LDAP
:NONE
:NONE
:TRUE
LDAP:Lightweight Directory Access Protocol
TFIM:IBM Tivoli federated Identity Manager
マップはTFIMだけでサポート
MQ、HTTP(s)のトランスポート・プロトコルで利用可能
„SOAP/HTTP(s)では、WS-Securityを使用
外部セキュリティ・プロバイダーとして、LDAP(v3以上)、TFIM 6.1をサポート
57
メッセージフロー・レベル・セキュリティ
<参考>
ブローカーをPEP(Policy Enforcement Point)として使用
複数セキュリティ・ドメイン環境でシングル・サインオンを実現
PDP(Policy Decision Point)、PolicyRepository
ログイン
USER_A PASSWD_A
システム
PEP
セキュリティ・ドメインA
セキュリティ・ドメインB
ブローカー
セキュリティ・トークンのマッピング
USER_A PASSWD_A
USER_A PASSWD_A
システム
58
USER_1 PASSWD_1
USER_1 PASSWD_1
Javaコードの実行
J2SE 1.5のJavaコードを実行グループ内で実行可能
ESQLからJava関数(static method)を呼び出し
„Compute、Database、Filterノードから既存のJava関数を呼び出して利用
メッセージ・ツリーにアクセスためのJava APIを提供
„JavaComputeノードを使えば、ESQLでなくJava言語でメッセージ・フローのロジックを開発
ブローカー(bipservice、bipbroker)
実行グループ(DataFlowEngine)
JNI
JVM
実行グループにJVMをロード.JNI経由でJAVAコードを実行
59
XMLツール
RAD(Rational Application Developper)と同一のXMLツールを付属
WSDL、DTD、XMLスキーマ、 XML、XSLファイルの作成・テストが可能
60
デバッガー
メッセージ・フローのデバッグ・ツールが付属
ブレーク・ポイントを設定し、メッセージのパース状況などを確認可能
同一ツールで、ESQL、GUIマッピング、Javaコードをデバッグ可能
メッセージ・ツリーのパース状況
61
コード変換テーブルのカスタマイズ
コード変換にICU(International Components for Unicode)を利用
ICU v3.2を内包.独自のコード変換テーブルを作成して追加可能
„ 外字エリアのマッピングが異なるアプリケーションなども、独自の変換テーブルを作成して対応可能
コード変換テーブル作成時に必要なツールの入手先
http://www.ibm.com/software/globalization/icu/downloads.jsp
コード変換テーブルの雛形を入手可能.カスタマイズして利用可能
http://dev.icu-project.org/cgi-bin/viewcvs.cgi/charset/data/ucm/
62
統計レポート
統計レポートの出力をサポート
メッセージ・フローが処理したメッセージ数の把握などが可能
<メッセージ・フロー統計の出力項目>
情報カテゴリ
項目
ヘッダー
統計種別(Snapshot or Archive),出力理由(インターバル経過,ブローカー停止,・・・)
メッセージ・フロー
メッセージ・フロー名,メッセージ・フローUUID
実行グループ
実行グループ名,実行グループUUID
ブローカー
ブローカー名,ブローカーUUID
インターバル
統計開始日時,統計終了日時,
メッセージ
処理メッセージ数,処理メッセージの総バイト数,最小/最大メッセージ長
処理時間
最小/最大/トータルElapsedタイム, 最小/最大/トータルCPUタイム
アイドル時間
メッセージ入力待ちの時間(Elapsedタイム,CPUタイム)
スレッド
割り当てスレッド数,最大実行スレッド数
エラー
MQGETのエラー回数(HTTPInputを含む),パース・エラーを含んでいたメッセージ数、
エラー処理されたメッセージの数,AggregateReplyのタイムアウト回数
同期点処理
コミット回数,バックアウト回数
メッセージ・フロー統計の情報を補足・詳細化するスレッド統計、ノード統計、ターミナル統計があります
63
構成例
ブローカーが停止すると、全連携業務が停止.ブローカーはActive-Activeのクローン構成
MQクラスターを構成し、MQ通信の負荷分散と可用性を向上
パーシステント・メッセージがあるときは、Active-Activeの相互テークオーバー構成
−−> 障害時にキューに滞留しているメッセージを早期に処理
SOAP/HTTP通信の負荷分散と可用性向上のために、ネットワーク・ディスパッチャーを構成
HTTPS通信の証明書取り消しリスト(CRL)、SOAP/JMS通信のJMS管理オブジェクトを管理するLDAPサーバーを構成
BigIPでSOAP/HTTP通信の
負荷分散と可用性向上
MQ
Active-Active構成
パーシステント・メッセージがあるときは、相互テーク・オーバーにし、
滞留しているメッセージを早期に処理
SOAP/JMS通信のために
JMS管理オブジェクトを保存
BigIP
HTTPリスナー
HTTPリスナー
ブローカー
ブローカー
MQ
MQ
SOAP/HTTPs通信のために
認証取り消しリストを保存
LDAPサーバー
上位のサーバーから
認証取り消しリストを取り込み
MQクラスター
ラウンドロビンの負荷分散と可用性向上
MQ
64
JMS通信を行う周辺システムが参照す
るLDAPサーバーに同期レプリケーション
メッセージ・フロー例
シナリオ
複数の処理要求を1つのMQメッセージで受信
個々の処理要求に分解.データ・フォーマット(CWF−>XML)、
プロトコル(MQ−>HTTP)を変換し、サービス・プロバイダーに処理をリクエスト
処理結果を1つのMQメッセージにまとめ、応答メッセージを返却
サービス・プロバイダー
HTTP
処理1
MQアプリケーション
MQMD
MQMD
処理1
結果1
処理2
結果2
・・・
処理2
結果1
結果2
・・・
65
パフォーマンス
ケース:XML−>CWF変換
XML
CWF
測定環境:pSeries 9117-570 Power 5 with 4 * 1.7Ghz processors with 4GB RAM
メッセージ・フローを1インスタンス(スレッド)で実行しているため、CPUを使い切れていない.
複数インスタンスで実行すれば、Message Rateも比例して伸びる
パフォーマンス・レポートの入手先
http://www-306.ibm.com/software/integration/support/supportpacs/product.html#wmqi
66
Fly UP