Comments
Description
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