Comments
Description
Transcript
概説 アジェンダ WMBとは 開発物
概説 アジェンダ WMBとは WebSphere Message Broker (WMB)とは システム・コンポーネント 開発物 WMBの開発物 メッセージ定義 メッセージ・フロー 主な提供機能 構成例 当資料では、WMB の導入/運用から、アプリケーションの実装に至るまで、一通りの機能について詳細に解説しています。 当資料は、WMBv6.1をベースに作成しています。 当資料はIBMの正式なレビューを受けていません。当資料に含まれる全ての情報は、利用者の責任において使用される べきものであり、特定環境への適用は利用者の判断に依存します。 2 WMBとは 3 WebSphere Message Broker(WMB)とは WebSphere Message Broker (WMB)はSOAにおけるESBを構築するための製品 ESB(Enterprise Service Bus)はアプリケーションやサービスを連携するための、 通信基盤を担うレイヤー 宛先システムに応じたプロトコル変換、データ・フォーマット変換、ルーティングなどのメディエーションを実施 接続先のアプリケーションを仮想化し、疎結合を実現 –送信側は物理的な宛先や、宛先アプリの実装を意識しない IBMの提供するESB製品群 お客様の連携要件に応じた製品選択が可能 WebSphere DataPower 高速かつセキュアな、 XML処理に 特化したアプライアンス製品 WebSphere ESB WASをベースとして実装され、Web サービス間の接続を主にサポート WebSphere Message Broker 異機種システム間の接続をサポート 幅広い接続性と変換機能を持つ WMBは提供する機能の多さ、サポートするプロトコルやデータ・フォーマットの多さから、 Advanced ESBとして位置づけられる 4 WebSphere Message Broker(WMB)とは 多くのプロトコルをサポート MQ、JMS、HTTP(S)、Webサービス(SOAP)、ファイル、EIS(SAP、Seibel・・・) 幅広いデータフォーマットに対応 XML、ユーザ定義(Cヘッダー形式、COBOL COPY句)、バイナリー、タグ/区切り文字形式、 業界標準(SWIFT、EDI・・) 豊富な処理パターン ルーティング、フィルター、変換、配布、組み立て、分解、関連付けなど 開発の容易性 GUIによる簡単な開発、またはスクリプト/プログラムによる複雑な開発が可能 充実した管理機能と高いパフォーマンス GUI、コマンドによる管理、管理用プログラムも作成可能 C++ベースの実行環境で高速なトランザクション処理を可能 幅広いプラットフォームのサポート 分散系からホストまで・・・ SOAP/HTTP Webサービス アプリケーション XML/MQ JMSアプリケーション WMBブローカー ・通信プロトコルの変換 ・データ・フォーマットの変換 ・制御の変換 など SOAP/JMS Webサービス アプリケーション CWF/MQ MQアプリケーション (データ・フォーマット/通信プロトコル) 5 システム・コンポーネント システム・コンポーネント(開発環境) メッセージ・ブローカー・ツールキット リポジトリ(オプション) 構成マネージャー メッセージ・ブローカー ツール・キット リポジトリ (オプション) ※WMBが提供している コンポーネントではない ブローカー・ドメイン システム・コンポーネント(本番環境) ブローカー ユーザー・ネーム・サーバー(オプション) 構成マネージャー ユーザー・ネーム・サーバー (オプション) 開発環境 開発環境 実行環境 本番環境 ブローカー 実行グループ アプリケーション アプリケーション アプリケーション アプリケーション 稼動プラットフォーム コンポーネント サポート・プラットフォーム ブローカー 構成マネージャー ユーザー・ネーム・サーバー AIX、Solaris(x86-64、SPARK)、HP-UX(Itanium、PA-RISK)、 Linux(x86、x86-64、Power、zSeries)、Winsows、z/OS メッセージ・ブローカー・ツールキット Windows、Linux/x86 6 システム・コンポーネント詳細 ブローカー・ドメイン 構成マネージャーが管理するコンポーネントの範囲 (管理ドメイン) 複数のブローカー、ユーザー・ネーム・サーバーを1つの構成マネージャーで管理可能 管理ユーザーは、ツールキットを構成マネージャーに接続してブローカー・ドメインを構成・管理 実行グループの作成、開発物(メッセージ・フロー、メッセージ定義)のデプロイ 実行グループ、メッセージ・フローの開始/停止、稼動状況の照会 構成マネージャー ツールキットからの操作要求に従って、ブローカー・ドメインの実際の構成定義作業を実行 ブローカー・ドメインの構成情報を保持 Apache Derbyを内包 7 システム・コンポーネント詳細 ブローカー メッセージ・フローの実行環境(実行グループ)の構成・管理を行う デプロイされたメッセージ・フローをDataFlowEngineプロセス(実行グループ)のスレッドで実行 32ビット版、64ビット版のDataFlowEngineプロセスを提供 デプロイされた構成定義、開発物をブローカー・データベースに保存 構成マネージャーと切り離されても単独で稼動可能 ブローカー(bipservice、bipbroker) 実行グループ(DataFlowEngine) メッセージ・フロー1 メッセージ・フロー1 ブローカー・データベース (DB2、Oracle、Syabase、SQLServer) メッセージ・フロー2 実行グループ(DataFlowEngine) メッセージ・フロー1 ユーザー・ネーム・サーバー(オプション) PubSub通信でのセキュリティ管理を行う トピックにアクセスできるユーザー(パブリッシャー、サブスクライバー)を制限 8 システム・コンポーネント 詳細 メッセージ・ブローカー・ツールキット EclipseベースのGUI開発ツール ツールキットから行う主な作業 メッセージ・フロー、メッセージ定義の開発 作成した開発物のテスト/デバッグ ブローカー・ドメインの構成定義 ・実行グループの作成/削除 ・開発物のコンパイル&パッケージング、デプロイ ・メッセージ・フロー、メッセージ定義の除去 稼動状況の表示 ・実行グループ、メッセージ・フローの開始/停止 ・稼動状況の表示 テストツールやデバッガーも標準提供 リポジトリ(オプション) ツールキットは各々のマシンのローカル・ファイル・システムに開発物を保存 複数ユーザーの開発で、開発物の一元管理を行うときはリポジトリを使用 Eclipseのプラグインとして、一般的に提供されている製品を別途入手 開発規模 CVS (OpenSource Sorfware) ClearCaseLT (Rational) ClearCase (Rational) 費用 サポート 無償 なし (コミュニティのみ) 中 製品として提供 パスポート・アドバンテージ 小~大 製品として提供 パスポート・アドバンテージ 個人・小 9 blank 10 開発物 11 WMBの開発物 メッセージ定義とメッセージ・フローを開発 ブローカーでは、物理フォーマットやプロトコルを意識せずに、データへ統一的にアクセスするた めに、受信したメッセージを共通の論理ツリーに展開して、変換処理などを実施 メッセージ定義に基づいて、データのパース(展開) / 組み立てを実施 メッセージ・フローに基づいて、データに対して必要なメディエーション処理を実施 論理メッセージ・ツリー Root Properties メッセージ 定義 ヘッダー類 データ データの組み立て データのパース メッセージ 定義 ESQLでアクセス メッセージ・フロー CWF/MQ (一方向型) SOAP/HTTP (リクエスト/リプライ) MQアプリケーション Webサービス アプリケーション MQMD <msg><data><elm01>aaa</elm01> <elm02>bbb ・・・ </msg> フォーマット変換、プロトコル変換、ルーティングなどを実施 12 aaa bbb ・・・ メッセージ定義 メッセージ定義 入出力メッセージのデータ構造を定義 CWF、TDSなど、メッセージ内にデータ構造を含まないメッセージをパース/組み立てするために必要 (データ構造を含むXMLではメッセージ定義の作成はオプション) 論理構造と、物理表現の2段階で開発 エレメントを積み上げて、データの論理構造を定義 個々のエレメントにビットストリームでの表現方法(物理表現)を設定 –設定項目は、物理フォーマット種別(CWF、TDS、XML)ごとに異なる メッセージ GUIまたはメッセージ定義ファイルのインポートにより定義を実装 複合タイプ データの論理構造を作成 個々のエレメントの物理表現を設定 エレメント エレメント 複合タイプ 複合タイプ エレメント エレメント 単純タイプ 単純タイプ タイプ:データの型 エレメント:タイプのインスタンス 複合タイプ :エレメントの集合、構造体のイメージ StringタイプのCWFの物理属性例 ・固定長xxxバイト/可変長(長さ付き)/可変長(null終端) ・左寄せ/右寄せ ・パディング文字 13 メッセージ・フロー メッセージ・フロー データの処理フローをGUIで記述したもの データ・フォーマット変換、通信プロトコル変換、制御ロジックの実装など 製品が提供するプロセス・ノードを組み合わせて、処理を実装 プロセス・ノードは特定の処理を行う部品 –実体は共有ライブラリ.メッセージ・フローの実行スレッドから逐次コールされて処理を実行 プロパティの設定、簡単なプログラミングの組み込みなどで、プロセス・ノードの動作をカスタマイズ カスタマイズしたプロセス・ノードを接続して処理フローを作成 プロパティ ターミナル 接続 プロセス・ノード 入力ノードが処理の開始点 入力ノード : キューからメッセージをMQGETするMQInputノードなど メッセージの受信をトリガーに処理を開始 14 メッセージ・フロー プロセス・ノード 製品が提供する主なプロセス・ノード 通信プロトコル・サポート MQ MQInput、MQOutput、MQGet、MQReply JMS JMSInput、JMSOutput、JMSReply SOAP SOAPInput、SOAPReply、SOAPRequest、SOAPAsyncRequest、SOAPAsyncRequest HTTP HTTPInput、HTTPReply、HTTPRequest FTP FileInput、FileOutput TCPIP TCPIPClientInput、TCPIPClientReceive、TCPIPClientOutput、 TCPIPServerInput、TCPIPServerReceive、TCPIPServerOutput EIS SAPInput、SAPRequest、PeopleSoftInput、PeopleSoftRequest、SiebelInput、SiebelRequest メッセージ・ツリーへのアクセス(メッセージの変換)、データベースへのアクセス メッセージの変換 Compute、JavaCompute、Mapping、XSLTransform データベース・アクセス Database、DataUpdate、DataInsert、DataDelete、Warehouse、DatabaseRetrieve 処理フロー制御 処理分岐 Filter、RouteToLabel/Label、Route、DatabaseRoute 集約 AggregateControl/AggregateRequest/AggregateReply、Collector その他、エラー処理用など、複数のノードを提供 C言語、およびJavaでのプラグイン・ノードの開発も可能 製品が標準提供しない機能を、ユーザー、または他ベンダーが独自開発したプロセス・ノード 15 メッセージ・フロー サポートするプログラミング言語 ESQL WMBが提供するスクリプト言語 –SQL Version3をベースに、メッセージ・ツリーとデータベースの両方の操作を行えるように拡張 プロセス・ノードに組み込んでメッセージ・ツリーやデータベースをアクセス –メッセージ・ツリーの参照、更新(フィールドの追加、削除、値の更新、並べ替え など) –データベースの参照、更新 16 メッセージ・フロー Java J2SE 1.5のJavaコードを実行グループ内で実行可能 JavaComputeノードを使用して、Javaで処理ロジックを実装 –メッセージ・ツリーにアクセスためのJava APIを提供 ESQLからJava関数(static method)を呼び出すことも可能 –Compute、Database、Filterノードから既存のJava関数を呼び出して利用 ブローカー(bipservice、bipbroker) 実行グループ(DataFlowEngine) JNI JVM 実行グループにJVMをロード.JNI経由でJAVAコードを実行 17 blank 18 主な提供機能 19 主な提供機能 外部インターフェースのサポート データ・フォーマット変換 文字コード変換 データベース・アクセス フロー制御 エラー処理 その他 20 外部インターフェースのサポート 多くの通信プロトコルをサポート その他のサポート通信プロトコル 各プロトコルに応じた入出力インターフェースを提供 サポート対象の主要な通信プロトコル MQ、JMS、HTTP/HTTPS、FTP*、SMTP*、 MQEveryplace、SCADA、JMS(IP) EIS*(SAP、People Soft、Siebel) サポート対象外の通信プロトコルにはアダプターで対応(プラグイン・ノードの開発など) 入力と出力で異なるプロトコルノードを選択可能 ->プロトコル変換 * クライアント機能を提供 ファイル・アプリケーション メール・サーバー FTPサーバー SMTP FTP EISシステム SAP、Siebel、People Soft、 ブローカー EJBアプリケーション IIOP プラグイン (EJBクライアント) MQ JMS HTTPs EJBアプリケーション (MDB) Webサービス アプリケーション MQアプリケーション 21 外部インターフェースのサポート(MQ、JMS) MQサポート メッセージ・フローからMQキューに対してGET / PUTが可能 入力キューはWMBブローカーが使用するキュー・マネージャーのローカル・キュー MQGetノードを使用して、処理フローの途中でキューからメッセージを取得することも可能 JMSサポート メッセージ・フローからJMSプロバイダーに接続が可能 JMS 1.1仕様に準拠する任意のJMSプロバイダーをサポート –JMSプロバイダーが提供するクラス・ファイル(JRE1.5のサポートが必要)を利用して接続 MQとJMSプロバイダーを中継する場合は、ヘッダーの変換が必要 –JMSヘッダー<->MQヘッダー(MQMD)の変換ノードを提供 MQアプリケーション JMSアプリケーション JMSヘッダー->MQヘッダー(MQMD) WMQ WAS Messaging Engine (JMSプロバイダー) JMSヘッダー<-MQヘッダー(MQMD) 22 外部インターフェースのサポート(Webサービス) Webサービスサポート Webサービス・アプリケーションとの接続が可能 SOAP/HTTP(s)、SOAP/JMSをサポート HTTPプロトコルでのWebサービス・サポートとして、SOAPノードとHTTPノードの2種類を提供 SOAPノードは、SOAPメッセージを容易に扱うために、v6.1より提供 –SOAPメッセージに特化 –WS-AddressingやWS-Securityをサポート –Webサービスの非同期呼び出しも可能 (SOAPAsyncRequest / SOAPAsyncResponse) HTTPノードは、Webサービス(SOAP)だけでなく、Web2.0 をサポート –SOAPメッセージだけでなく、RESTやユーザー定義のメッセージ形式にも対応 –WS-*規格には非対応 Webサービス・プロバイダー Webサービス・ リクエスター Webサービス・ リクエスター MQアプリ ケーション Webサービス・ プロバイダー SOAP/JMS ブローカー SOAP/HTTP SOAP/JMS CWF/MQ MQアプリ ケーション CWF/MQ WMBを介して連携することで、接続先を仮想化し、既存のアプリ ケーションがWebサービス・リクエスターとしてサービス呼び出しを要 求したり、既存のアプリケーションをWebサービス・プロバイダーとし て公開することが可能となる 23 外部インターフェースのサポート(ファイル) ファイルサポート メッセージ・フローからファイルの読み込み、書き出しが可能 ローカルのファイルだけでなく、FTP経由でリモートのファイルにもアクセス可能 FTPクライアントの機能を提供.FTPサーバーの機能は提供していない 指定したディレクトリーを定期的にスキャンして、ファイルを検索 ファイル全体を1レコードとして処理することも、指定したレコード単位に処理することも可能 使用例. リモートのファイルを1レコードずつ読み出して、MQメッセージに変換 FTPサーバー (1)指定されたディレクトリにファイルが書き出されるのを定期的にスキャン MQアプリケーション (2)ファイルを検出したらローカルにFTP (4)読み込んだレコードをMQメッセージに変換して出力 WMQ (3)FTPが完了したらリモートのファイルは削除 (5)処理が終わったファイルはサブ・ディレクトリに移動 (移動ではなく、削除も可能) 24 外部インターフェースのサポート(その他) TCPIPサポート ソケット通信アプリケーションとの接続をサポート TCPIPクライアント、TCPIPサーバーのいずれもサポート SMTPサポート SMTPサーバーに接続し、電子メールを送信可能 フロー処理でエラーが発生した際に、オペレータへの通知などが可能 EISサポート 主要なEISシステムとの接続をサポート SAP、People Soft、Siebel との接続が可能 WebSphere Adaptersの機能をEISノードとして提供 JCA Framework 1.5に準拠 PubSubサポート サブスクライブ要求(購読要求)に応じて、パブリッシャー(情報の提供者)から投稿されたメッセージ をサブスクライバー(情報の消費者)に配信する機能 今後MQの提供するPubSubブローカーに統合予定 (MQv7でPubSub機能を拡張) 25 データ・フォーマット変換 多くのデータ・フォーマットをサポート カスタム・ワイヤー・フォーマット(CWF:Custom Wire Format) CやCOBOLアプリケーションなどが扱う構造体イメージのデータ MQ太郎 千葉市美浜区中瀬1-1 19780726 ・・・ タグ・区切り文字フォーマット(TDS:Tagged Delimited 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、バイナリをサポート 26 データ・フォーマット変換 宛先システムに合わせた、データ・フォーマット変換が可能 物理フォーマット種別の変換と論理メッセージの変換が可能 物理フォーマット種別の変換: 論理メッセージの変換: CWF、TDS、XMLなどの変更 エレメント追加/削除/並べ替えや、エレメント値の変更 ブローカー コード変換の実施 <Customer><Name>MQ太郎</Name> <Adress>千葉市美浜区・・・ XMLメッセージ MQ太郎 千葉市美浜区中瀬1-1 19780726 ・・・ CWFメッセージ 論理メッセージの組み換えに4つの方法を提供 ESQL GUIマッピング Java スタイル・シート (Computeノードを使用) (Mappingノードを使用) (JavaComputeノードを使用) (XSL Transformノードを使用) 27 文字コード変換機能 宛先システムに合わせた、文字コード変換が可能 WMB処理内のコードページはUTF-16 メッセージをパース時:文字フィールドをUnicodeに変換 メッセージを組み立て時:文字フィールドをフロー内で指定した文字コードに変換 コード変換にICU(International Components for Unicode)を利用 ICU v3.2を内包.独自のコード変換テーブルを作成して追加可能 –外字エリアのマッピングが異なるアプリケーションなども、独自の変換テーブルを作成して対応可能 コード変換テーブル作成時に必要なツールの入手先 http://www.ibm.com/software/globalization/icu/downloads.jsp コード変換テーブルの雛形を入手可能.カスタマイズして利用可能 http://bugs.icu-project.org/trac/browser 28 データベース・アクセス メッセージ・フローからデータベースの参照・更新が可能 ブローカー経由で配信したメッセージからデータ・ウェアハウスを構築 データベースの照会結果をメッセージに埋め込んでルーティング データベースの照会結果を元に宛先ルーティング データベースへのアクセスに3つの方法を提供 ESQL Databaseノード / Computeノード / FilterノードからODBC接続 GUIマッピング Mappingノード / DataDeleteノード / DataUpdateノード / DataInsertノード / Warehouseノードから ODBC接続 DatabaseRouteノード、DatabaseRetrieveノードからJDBC接続 Java サポート対象のデータベース: DB2、Oracle、Sybase、SQL Server、Informix JavaComputeノードからJDBC接続 ストアード・プロシージャーの呼び出しにも対応 Insert / Update / Delete 29 データベース・アクセス リポジトリ製品との連携をサポート WSRR(WebSphere Service Registry and Repository)との連携をサポート WSRRでサービスの定義情報を全社的に一元管理 WSRRから動的にサービス情報やサービス文書を取得して、ルーティングやフォーマット変換に利用 WSRRにアクセスしてサービスの定義情報を照会するためにEndpointLookupノードとRegistryLookupノー ドを提供 パフォーマンス向上のために、照会結果をキャッシュ可能 WebSphere Message Broker Webサービス・ リクエスター サービスA サービスB SOAP Request Endpoint Lookup SOAP Request WSRR 宛先情報や、登録文書をWSRRから取 得し、動的なルーティングやメディエーション 処理を行うことが可能 サービスA用 サービスB用 WSDL WSDL 30 フロー制御 メッセージ・フロー処理の実行に関する制御機能を提供 条件に応じて、フローの処理内容を制御 条件に応じて、フローの実行タイミングを制御 フローの実行タイミングの制御 フローの処理内容の制御 処理Aを実施 メッセージを 受信 条件をチェック 条件チェック 処理を実施 処理Bを実施 ルールに基づく、処理の開始 ルールに基づく、処理分岐 フローのスケジュール実行 複数メッセージの受信をトリガーにした処理の開始 など 受信メッセージの値や、データベースの値 を元に、異なる処理を実装 31 フロー制御 条件に応じた処理内容の制御 受信メッセージやデータベースの値を参照して、処理分岐 処理分岐するための条件式は、ESQL、Java、GUIで実装可能 条件式をESQLで記述 条件式をJavaで記述 条件式をGUIで設定 Filterノード / RouteToLabel ノード & Labelノード JavaComputeノード Routeノード / DatabaseRouteノード 条件に応じたフローの実行タイミングの制御 フローの実行タイミングを時間や、メッセージの受信条件により、制御 複数メッセージの集約 AggregateControlノード / AggregateRequestノード (1:N連携、N:1連携) / Aggregate Replyノード、Collectorノード スケジュール実行 TimeoutControlノード / TimeoutNotificationノード 分岐フローの実行順序制御 FlowOrderノード 【1:N連携】 【N:1連携】 予約サービスを並行に実行 ホテル予約サービス 旅行予約業務 複数システムからメッセージを集約 ホテル予約サービス ブローカー ブローカー 旅行予約業務 飛行機予約サービス 飛行機予約サービス 32 エラー処理 フロー処理中に発生したエラーをハンドリングするための機能 フローの処理で明示的に例外を発生させたり、例外を捕捉して独自のエラー処理を実装すること が可能 エラー処理に関するノードとしては以下のノードを提供 以下のノードを組み合わせて、エラー・ログを取得したり、エラー用のキューに出力したり、要件に応じたエラー 処理を実装 例外の生成: 例外の補足: ログの出力: Throw TryCatch Trace エラー処理 入力キュー エラー処理 トランザクションの バックアウト エラー・ログ 取得 33 blank 34 エラーキューへ 出力 キューへの出力エラー 発生 標準提供のプロセス・ノード 役割 ノード名 外部インターフェース MQInput/MQOutput/MQReply/MQGet JMSInput/JMSOutput/JMSReply HTTPInput/HTTPReply/HTTPRequest SOAPInput/SOAPReply/SOAPRequest SOAPAsyncRequest/SOAPAsyncResponse FileInput/FileOutput TCPIPClientInput/TCPIPClientOutput/TCPIP ClientReceive/TCPIPServerInput/TCPIPServ erOutput/TCPIPServerReceive EmailOutput SCADAInput/SCADAOutput SAPInput/SAPRequest PeopleSoftInput/PeopleSoftRequest、 SiebelInput/SiebelRequest Publication Real-timeInput MQOptimaizeFlow、Real-timeOptimizeFlow メッセージ変換 Compute JavaCompute Mapping XSLTransform SOAPEnvelope/SOAPExtract JMSMQTransform、MQJMSTransform MQHeader、JMSHeader、HTTPHeader <参考> 説明 MQとの入出力 JMSプロバイダーとの入出力 HTTPとの入出力 WebServiceとの入出力 ファイルの入出力.FTP通信も可能(FTPクライアント機能) ソケット通信との入出力 (クライアント機能とサーバー機能を提供) メールの出力(SMTP) SCADA端末との入出力 SAP、PeopleSoft、Siebelとの入出力 PubSub通信.MQ、MQEveryPlace、SCADA端末にメッセージ送 信 JMS(IP)通信(入力) それぞれ、「MQInput + Publication」、「RealtimeInput + Publication」に相当 ESQLによる変換、データベース・アクセス(汎用) Javaによる変換 GUIマッピングによる変換、データベース・アクセス(読み込みのみ) XSLTによる変換 SOAPエンベロープの分離/付与 JMSメッセージとMQメッセージの変換 各種プロトコルのヘッダーの生成/編集 35 標準提供のプロセス・ノード 役割 データベース・ アクセス フロー制御 エラー処理 その他 ノード名 Database DatabaseRetrieve DataDelete/DataInsert/DataUpdate/ Warehouse <参考> 説明 ESQLによるデータベース・アクセス(汎用) データベースの照会結果をメッセージ・ツリーにセット(読み込みのみ) GUIマッピングによるデータベース・アクセス (互換性のために違う名前で残されているだけで、処理内容は Mappingと同等) WSRRに登録されたWSDLまたはサービス文書へのアクセス ESQLによる条件判断で処理を分岐 Labelノードに処理を移動/処理の移動先 XPATH式による条件判断で処理を分岐 データベースの照会結果に対して、XPATH式による条件判断で処理 を分岐 Aggregator機能 (複数宛先への要求送信、応答メッセージを待ち受けて合体) 複数のメッセージを待ち受けて、1のメッセージに集約 EndpointLookup/RegistryLookup Filter RouteToLabel/Label Route DatabaseRoute AggregateControl/ AggregateRequest/AggregateReply Collector TimeoutControl、TimeoutNotification FlowOrder Throw TryCatch Trace ResetContentDescriptor Input/Output PassThrough メッセージ・フローのスケジュール実行 分岐フローの実行順序制御 例外の生成 例外の補足 メッセージのダンプ メッセージ・パーサーの変更(メッセージの再パース) サブ・フローの作成(サブ・フローへの開始点/サブフローの出口点) サブ・フローにバージョンなどの識別子を設定(メッセージへのアクションは ない) メッセージとメッセージ定義の妥当性検査 Validate 36 その他 トランザクション・サポート メッセージフロー・実行時セキュリティ 開発支援 運用管理 37 トランザクション・サポート メッセージ・フローを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) 38 MQCMIT(または、MQBACK) メッセージフロー・実行時セキュリティ メッセージに埋め込まれたID情報に基づき、メッセージごとのセキュリティ検査が可能 受信メッセージからID情報を取り出し、セキュリティ・プロファイルに基づいて、外部セキュリティ・プ ロバイダーで検査を実行 ID情報は、メッセージの任意の位置から抽出することが可能 アクセス・ユーザーの認証、メッセージ・フローへのアクセス権限検査(認可)を行う –アクセス・ユーザーを代替ユーザーにマップし、代替ユーザーでアクセス権限の検査を行うことも可能 オリジナルではなく、マップ後のID情報を設定してルーティングすることが可能 MQ HTTP(S) SOAP 認証/認可/IDのマップ IDの利用 MQ HTTP(S) SOAP IDの伝播 セキュリティ・マネージャー キャッシュ 外部セキュリティプロバイダー 認証 マップ 認可 LDAP TFIM TFIM LDAP TFIM Security Profiles ブローカーが保管 外部セキュリティ・プロバイダー ・LDAP:Lightweight Directory Access Protocol ・TFIM:IBM Tivoli federated Identity Manager MQ、HTTP(s)のトランスポート・プロトコルで利用可能 外部セキュリティ・プロバイダーとして、LDAP(v3以上)、TFIM 6.1をサポート 39 開発支援 メッセージ・ブローカー・ツールキットは開発をサポートするツールを提供 デバッガー ブレーク・ポイントを設定し、メッセージの デバッガー パース状況などを確認可能 同一ツールで、ESQL、GUIマッピング、 Javaコードをデバッグ可能 テストツール ユニットテスト・クライアントにより、 メッセージフローの稼動確認が可能 キューへのメッセージの読み書き(エンキュー/デキュー)も可 入力ノードを右クリックして「テスト」を選択して起動 – MQInput、SOAPInput、HTTPInput、JMSInput テスト・ツール XMLツール RAD(Rational Application Developper)と 同一のXMLツールを付属 –WSDL、DTD、XMLスキーマ、 XML、 XSLファイルの作成・テストが可能 40 運用管理 メッセージ・ブローカー・ツールキットでWMBの運用管理が可能 ブローカー・ドメインの構成定義 ・実行グループの作成/削除 ・開発物のコンパイル&パッケージング、デプロイ ・メッセージ・フロー、メッセージ定義の除去 稼動状況の表示 ・実行グループ、メッセージ・フローの開始/停止 ・稼動状況の表示 MBエクスプローラーでも同様の機能を提供 MQエクスプローラー(Eclipseベース)に ブローカー管理機能を付加 ツールキットの管理機能はすべて対応 ブローカー作成などのコマンドで行う作業の一部も 実施可能 パフォーマンス情報のモニターも可能 サポートパックとして提供 (カテゴリー3:製品レベルのサポート) IS02: WebSphere Message Broker Explorer Plug-in http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg24012457&loc=en_US&cs=utf-8&lang=en 41 運用管理 統計レポートの取得機能を提供 メッセージ・フローが処理したメッセージ数や処理時間の把握などが可能 出力方法はPub/Subスクライバとユーザー・トレースの2種類 (z/OSのみ、SMFも可能) <メッセージ・フロー統計の出力項目> 情報カテゴリ 項目 ヘッダー 統計種別(Snapshot or Archive),出力理由(インターバル経過,ブローカー停止,・・・) メッセージ・フロー メッセージ・フロー名,メッセージ・フローUUID 実行グループ 実行グループ名,実行グループUUID ブローカー ブローカー名,ブローカーUUID インターバル 統計開始日時,統計終了日時, メッセージ 処理メッセージ数,処理メッセージの総バイト数,最小/最大メッセージ長 処理時間 最小/最大/トータルElapsedタイム, 最小/最大/トータルCPUタイム アイドル時間 メッセージ入力待ちの時間(Elapsedタイム,CPUタイム) スレッド 割り当てスレッド数,最大実行スレッド数 エラー MQGETのエラー回数(HTTPInputを含む),パース・エラーを含んでいたメッセージ数、 エラー処理されたメッセージの数,AggregateReplyのタイムアウト回数 同期点処理 コミット回数,バックアウト回数 メッセージ・フロー統計の情報を補足・詳細化するスレッド統計、ノード統計、ターミナル統計があります 42 構成例 43 構成例 ブローカーは可用性を考慮し、Active-Standbyか、Active-Activeの構成をとる ブローカーが停止すると、全連携業務が停止するため高可用性構成は必須 Active-Standby 通常時は1系稼動し、障害発生時に待機系に引き継ぐ。(引継ぎ時間、業務は停止) MSCSやHACMPなどのHA製品を使用して構成。 ファイル連携や、MQでパーシステント・メッセージをやり取りする場合などは、HA製品による処理中 のリソースの引継ぎが必要となる。 Active-Active 通常時は2系稼動し、障害発生時は1系での縮退稼動となる。(業務の稼動に影響しない) 2系稼動させることで、負荷分散と可用性構成の実装が可能 MQ連携の場合は、MQクラスターを構成 パーシステント・メッセージがあるときには、Active-Activeの相互テークオーバー構成も可能 SOAP/HTTP連携の場合は、ネットワーク・ディスパッチャーを構成 必要に応じて、HTTPS通信の証明書取り消しリスト(CRL)、SOAP/JMS通信のJMS管理オブジェクトを 管理するLDAPサーバーなどを構成 構成マネージャーの稼動はブローカーの稼動に影響を与えないため、可用性構成をとるかどうか は任意 44 構成例 BigIPでSOAP/HTTP通信の 負荷分散と可用性向上 MQ Active-Active構成 パーシステント・メッセージがあるときは、相互テーク・オーバーにし、 滞留しているメッセージを早期に処理 SOAP/JMS通信のために JMS管理オブジェクトを保存 BigIP HTTPリスナー HTTPリスナー ブローカー ブローカー MQ SOAP/HTTPs通信のために 認証取り消しリストを保存 LDAPサーバー MQ 上位のサーバーから 認証取り消しリストを取り込み MQクラスター ラウンドロビンの負荷分散と可用性向上 MQ JMS通信を行う周辺システムが参照す るLDAPサーバーに同期レプリケーション 45 メッセージ・フロー例 シナリオ 複数の処理要求を1つのMQメッセージで受信 個々の処理要求に分解.データ・フォーマット(CWF->XML)、 プロトコル(MQ->HTTP)を変換し、サービス・プロバイダーに処理をリクエスト 処理結果を1つのMQメッセージにまとめ、応答メッセージを返却 サービス・プロバイダー HTTP 処理1 MQアプリケーション MQMD MQMD 処理1 結果1 処理2 結果2 46 ・・・ ・・・ 処理2 結果1 結果2 パフォーマンス ケース: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 47 付録:WMBドキュメント一覧 WMB 概説資料 WMBの製品概要や、主な提供機能をまとめた概説資料 (WSDDで公開) http://www-06.ibm.com/jp/software/websphere/developer/bi/mbv61/ WMB 導入・構成ガイド WMBの導入&構成手順書 (WSDDで公開) http://www-06.ibm.com/jp/software/websphere/developer/bi/mbv61/install/ WMB 実装入門 WMB開発者向けの入門書(ザ・技術で公開) http://w306.ibm.com/jp/domino02/ise/ISEINFO.NSF/604755fe61c93ffc492563fd002551ec/6d6a46c9b3 7247744925744e000bb944?OpenDocument WMB Webサービス機能 SOAP/HTTPでの連携を実装する場合のノウハウをまとめた資料 (ザ・技術で公開) http://w306.ibm.com/jp/domino02/ise/ISEINFO.NSF/604755fe61c93ffc492563fd002551ec/f6ddc94740 9450a64925745600015e19?OpenDocument WMB 見積りガイド WMBのキャパシティ・プランニングについてまとめた資料 (ザ・技術で公開) http://w306.ibm.com/jp/domino02/ise/ISEINFO.NSF/604755fe61c93ffc492563fd002551ec/a7f026ed86 02324c492573160024929f?OpenDocument WMB HTTPパフォーマン ス・チューニング・ガイド HTTP連携でのパフォーマンス・チューニングについてまとめた資料 (ザ・技術で公開) http://w306.ibm.com/jp/domino02/ise/ISEINFO.NSF/604755fe61c93ffc492563fd002551ec/fc6f0ef2412 789b4492573160038f5f6?OpenDocument 48