...

概説

by user

on
Category: Documents
74

views

Report

Comments

Description

Transcript

概説
概説
アジェンダ
WMB(WebShere Message Broker)の位置付け
アプリケーション連携の実装
サポートする通信プロトコル
サポートするデータ・フォーマット
システム・コンポーネント
開発物
メッセージ・フロー
メッセージ定義
データ・フォーマットの変換の実装
その他の主な機能
構成例
パフォーマンス
2
WMBの位置付け
WMB(WebSephere Message Broker)の位置付け
通信プロトコル、データ・フォーマット、コードページの異なるアプリケーションを連携するための基盤
異種アプリケーションが連携するために必要な変換ロジックを集中管理
„ブローカーにアプリケーションを接続すれば、接続済みの他アプリケーションと連携可能
−−> N:Nのアプリケーション連携を実現
アプリケーション
JMSアプリケーション
JMSMap/JMS
XML/JMS
ブローカー
アプリケーション
XML/HTTP
・通信プロトコルの変換
・データ・フォーマットの変換
・制御の変換
MQアプリケーション
XML/MQ
SOAP/HTTP
Webサービス
アプリケーション
SOAP/JMS
Webサービス
アプリケーション
3
CWF/MQ
MQアプリケーション
(データ・フォーマット/通信プロトコル)
<ノート>
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構造体のようなデータを受信するので
あれば、データ・フォーマットの変換が必要です。WMBはデータを物理表現と内容に分離し、「メッセージ定義の開発」と「内容の組
み換えロジックの開発」 の2段階でデータ・フォーマットの変換ロジックを実装します。
メッセージ定義はデータのフォーマットを定義したもので、データの物理表現を含んでいます(例えば、文字列フィールドであれば「10バ
イトの固定長」、「右寄せ」、「空白文字でパディング」などが物理表現です)。メッセージ・フローはデータを受信するとメッセージ定義
に基づいてデータから物理表現を削除し、データの内容だけをメッセージ・ツリーに展開します。逆に、メッセージ・フローからデータを送
信するときは、メッセージ定義に基づいて物理表現をメッセージ・ツリーに付与してデータの組み立てを行います。メッセージ・フローに
Computeノードを配置してメッセージ・ツリーの内容を組み替えるロジックを実装すると、データのフォーマット変換が行えます。
アプリケーション連携のシステム開発において、 WMBを使うメリットは下記です。
(1) アプリケーション連携のための各種変換ロジックをGUIで開発するため短期間で実装でき、メンテナンスも容易
(2) テスト済みの部品を組み合わせて実装するため、テスト工数を削減できる
(3) データの内容にだけ注目してデータ・フォーマットの変換ロジックを開発できるため、短期間で実装でき、メンテナンスも容易
(XMLパーサーがXMLアプリケーションの開発生産性を向上させたように、WMBは様々なフォーマットに対してパーサーを
提供することで、フォーマット変換ロジックの開発生産性を向上させます。)
6
通信プロトコル
サポート対象の主要な通信プロトコル
その他のサポート通信プロトコル
MQ、HTTP、HTTPS、JMS
MQEveryplace、SCADA、JMS(IP)
サポート対象外の通信プロトコルにはアダプターで対応
アダプター製品を購入
アプリケーション、または、プラグイン・ノードでアダプターを実装
プラグイン・ノード
何らかの処理を行う自作の部品
アプリケーション
アプリケーション
FTP
アダプター
(FTP<->MQ)
FTP
ブローカー
EJBアプリケーション
IIOP
プラグイン
(FTPサーバー)
プラグイン
(EJBクライアント)
MQ
EJBアプリケーション
(MDB)
JMS
MQアプリケーション
JMS
JMSアプリケーション
Webサービス
アプリケーション
7
HTTPs
データ・フォーマット
サポート対象のデータ・フォーマット
ワイヤード・フォーマット(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をサポート.ネームスペースにも対応
<Customer><Name>MQ太郎</Name><Adress>千葉市美浜区・・・
その他
„MIME(SOAP
with Attatchmentを含む)、
JMSMap、JMSStream、SAP IDoc、バイナリをサポート
8
システム・コンポーネント
システム・コンポーネント
メッセージ・ブローカー・ツールキット
メッセージ・ブローカー
ツール・キット
リポジトリ(オプション)
構成マネージャー
ブローカー・ドメイン
ブローカー
ユーザー・ネーム・サーバー(オプション)
構成マネージャー
リポジトリ
(オプション)
※WMBが提供している
コンポーネントではない
ユーザー・ネーム・サーバー
(オプション)
開発環境
実行環境
ブローカー
実行グループ
アプリケーション
アプリケーション
アプリケーション
アプリケーション
稼動プラットフォーム
コンポーネント
サポート・プラットフォーム
ブローカー
構成マネージャー
ユーザー・ネーム・サーバー
AIX、Solaris、HP-UX、Linux(Intel、Power、zSeries)、Winsows、z/OS
メッセージ・ブローカー・ツールキット
Windows、Linux/Intel
9
システム・コンポーネント
開発環境 / 実行環境
開発環境で、ツールキットを使ってメッセージ・フロー、メッセージ定義を開発
開発物をコンパイル&パッケージングし、ブローカー・アーカイブ・ファイルを作成
構成マネージャー経由で、ブローカー・アーカイブ・ファイルを実行環境(実行グループ)にデプロイ
開発環境
実行環境
メッセージ・フロー
ブローカー・アーカイブ・ファイル
メッセージ・セット
コンパイル&パッケージング
構成マネージャー
ブローカー
デプロイ
ブローカー・ドメイン
構成マネージャーが管理するコンポーネントの範囲(管理ドメイン)
„ 複数のブローカー、ユーザー・ネーム・サーバーを1つの構成マネージャーで管理可能
管理ユーザーは、ツールキットを構成マネージャーに接続してブローカー・ドメインを構成・管理
„ 実行グループの作成、開発物(メッセージ・フロー、メッセージ定義)のデプロイ
„ 実行グループ、メッセージ・フローの開始/停止、稼動状況の照会
10
システム・コンポーネントの詳細
メッセージ・ブローカー・ツールキット
EclipseベースのGUI開発ツール
ツールキットから行う主な作業
„メッセージ・フロー、メッセージ定義の開発/デバッグ
„ブローカー・ドメインの構成定義
・実行グループの作成/削除
・開発物のコンパイル&パッケージング、デプロイ
・メッセージ・フロー、メッセージ定義の除去
„稼動状況の表示
・実行グループ、メッセージ・フローの開始/停止
・稼動状況の表示
リポジトリ
ツールキットは各々のマシーンのローカル・ファイル・システムに開発物を保存
−−> 複数ユーザーの開発で、開発物の一元管理を行うときはリポジトリを使用
„Eclipseのプラグインとして、一般的に提供されている製品を別途入手
開発規模
CVS (OpenSource Sorfware)
小・個人
費用
サポート
無料
なし (コミュニティのみ)
ClearCaseLT (Rational)
中
製品として提供
パスポート・アドバンテージ
ClearCase (Rational)
大
製品として提供
Rationalブランド
11
システム・コンポーネントの詳細
構成マネージャー
ツールキットからの操作要求に従って、ブローカー・ドメインの実際の構成定義作業を実行
ブローカー・ドメインの構成情報をデータベースに保存
„Cloudscapeを内包
ブローカー
メッセージ・フローの実行環境(実行グループ)の構成・管理を行う
„デプロイされたメッセージ・フローをDataFlowEngineプロセス(実行グループ)のスレッドで実行
„32ビット版、64ビット版のDataFlowEngineプロセスを提供
デプロイされた構成定義、開発物をブローカー・データベースに保存
„構成マネージャーと切り離されても単独で稼動可能
ブローカー(bipservice、bipbroker)
実行グループ(DataFlowEngine)
メッセージ・フロー1
メッセージ・フロー1
メッセージ・フロー2
実行グループ(DataFlowEngine)
ユーザー・ネーム・サーバー
メッセージ・フロー1
PubSub通信でのセキュリティ管理
„トピックにアクセスできるユーザー(パブリッシャー、サブスクライバー)を制限
12
メッセージ・フロー
メッセージ・フロー
データの処理フローをGUIで記述したもの
„データ・フォーマット、通信プロトコル、制御の変換ロジックの実装
製品が提供するプロセス・ノードの動作をカスタマイズ
„プロパティの設定、ESQLの組み込み
など
カスタマイズしたプロセス・ノードを接続して処理フローを作成
„データの内容や操作結果に基づいた処理分岐
など
プロパティ
ターミナル 接続
プロセス・ノード
入力ノードが処理の開始点
入力ノード : キューからメッセージをMQGETするMQInputノードなど
13
メッセージ・フロー
ESQL
WMBが提供するスクリプト言語
„SQL
Version3をベースに、メッセージとデータベースの両方の操作を行えるように拡張
プロセス・ノードに組み込んでデータやデータベースをアクセス
„データの参照、更新(フィールドの追加、削除、値の更新、並べ替え
„データベースの参照、更新
14
など)
メッセージ・フロー
プロセス・ノード
メッセージ・フローに組み込まれ、何らかの処理を行う部品
„実体は共有ライブラリ.メッセージ・フローの実行スレッドから逐次コールされて処理を実行
製品が提供する主なプロセス・ノード
„通信プロトコル・サポート
MQ
MQInput、MQOutput、MQGet、MQReply
HTTP
HTTPInput/HTTPReply、HTTPRequest
JMS
JMSInput、JMSOutput
„メッセージ・ツリーへのアクセス(メッセージの変換)、データベースへのアクセス
メッセージの変換
Compute、JavaCompute、Mapping、XMLTransform、
JMSMQTransform、MQJMSTransform
データベース・アクセス
Database、DataUpdate、DataInsert、DataDelete、Warehouse
„処理フロー制御
処理分岐
Filter、RouteToLabel/Label
集約
AggregateControl/AggregateRequest/AggregateReply
スケジュール実行
TimeoutControl、TimeoutNotification
プラグイン・ノード
„ユーザー、または、他ベンダー作成のプロセス・ノード.C言語、および、Javaで開発可能
15
標準提供のプロセス・ノード
役割
外部インターフェース
メッセージ変換
データベース・アクセス
フロー制御
エラー処理
その他
ノード名
<参考>
説明
MQInput/MQOutput/MQGet
MQとの入出力
MQReply
MQOutputのサブセット.MQMD.ReplyToQにメッセージ送信
JMSInput、JMSOutput
JMSプロバイダーとの入出力
SCADAInput/SCADAOutput
SCADA端末との入出力
HTTPInput/HTTPReply/HTTPRequest
WebServiceとの入出力
Publication
PubSub通信.MQ、MQEveryPlace、SCADA端末にメッセージ送信
RealtimeInput
JMS(IP)通信(入力)
MQOptimaizeFlow、RealTimeOptimizeFlow
それぞれ、「MQInput + Publication」、「RealtimeInput + Publication」に相当
Compute
ESQLによる変換、データベース・アクセス(汎用)
Java Compute
Javaによる変換
Mapping
GUIマッピングによる変換、データベース・アクセス(読み込みのみ)
Extract
Mappingのサブセット.データベース・アクセスなし
XMLTransform
XSLTによる変換
JMSMQTransform、MQJMSTransform
JMSメッセージとMQメッセージの変換
Database
ESQLによるデータベース・アクセス(汎用)
DataDelete/DataInsert/DataUpdate/Warehouse
GUIマッピングによるデータベース・アクセス
(互換性のために違う名前で残されているだけで、処理内容は同一)
Filter
ESQLによる条件判断で処理を分岐
RouteToLabel/Label
Labelノードに処理を移動/処理の移動先
AggregateControl/AggregateRequest/AggregateReply
Aggregator機能(複数宛先への要求送信、応答メッセージを待ち受けて合体)
TimeoutControl、TimeutNotification
メッセージ・フローのスケジュール実行
FlowOrder
分岐フローの実行順序制御
Throw
例外の生成
TryCatch
例外の補足
Trace
メッセージのダンプ
ResetContentDescriptor
Input/Output
メッセージ・パーサーの変更(メッセージの再パース)
サブ・フローの作成(サブ・フローへの開始点/サブフローの出口点)
PassThrough
サブ・フローにバージョンなどの識別子を設定(メッセージへのアクションはない)
Validate
メッセージとメッセージ定義の妥当性検査
メッセージ・パーサーのチェック
Check
16
メッセージ定義
メッセージ定義
CWF、TDSではデータのパース/組み立てのためにメッセージ定義の作成が必要
„データにデータ構造を含まないため、外部から与える
メッセージ
(データ構造を含むXMLではメッセージ定義の作成はオプション)
複合タイプ
エレメントを積み上げて、データの論理構造を定義
„タイプ:データの型、エレメント:タイプのインスタンス
エレメント
エレメント
„複合タイプ
複合タイプ
複合タイプ
(エレメントの集合、構造体のイメージ)
個々のエレメントにビットストリームでの表現方法(物理表現)を設定
„設定項目は、物理フォーマット種別(CWF、TDS、XML)ごとに異なる
データの論理構造を作成
個々のエレメントの物理表現を設定
StringタイプのCWFの物理属性例
・固定長xxxバイト/可変長(長さ付き)/可変長(null終端)
・左寄せ/右寄せ
・パディング文字
17
エレメント
エレメント
単純タイプ
単純タイプ
メッセージ定義
メッセージ定義のインポート生成
以下の既存のリソースをインポートしてメッセージ定義を生成することが可能
„C言語のヘッダー、COBOLコピー句
„XMLスキーマ、XML
DTD
„WSDL
18
データ・フォーマットの変換
ブローカーは、物理メッセージ <−> 論理メッセージの変換を自動で行う
データ受信時、メッセージ定義に従ってデータから物理表現を削除、ツリー構造の論理メッセージに変換(パース)
ルーティング実行時に、メッセージ定義に従って論理メッセージに物理表現を付与(組み立て)
−−> メッセージ・フローで論理メッセージを組み替えるだけで、データ・フォーマットの変換が可能
MQ太郎 千葉市美浜区中瀬1-1
<Customer><Name>MQ太郎</Name><Adress>千葉市美浜区・・・
パース:物理表現の削除
フィールドの追加/削除/値の変更/並び替え
Root
Properties
ヘッダー
MessageSet
MessageType
(Domain)
Customer
Name
Address
メッセージ・ツリー(論理メッセージ)
論理メッセージの組み換えに4つの方法を提供
ESQL、GUIマッピング、JavaCompute、XSLT
19
19780726 ・・・
組み立て:物理表現の付与
論理メッセージの組み換え
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;
:
20
論理メッセージの組み換え
GUIマッピング
GUIマッピングでメッセージを組み換えるときは、Mappingノードを使用
出力メッセージのエレメントに、入力メッセージのエレメントや計算式をマッピング
単純なマッピングならエレメントを
マッピングの実行条件、繰り返し実行のロジックも記述可能
ドラッグ&ドロップするだけ
エレメントにESQL関数、XPath関数での計算結果をマップ
スクリプト・エディター.
マッピングの実行条件(if)、
繰り返し処理(for)などを記述
21
論理メッセージの組み換え
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);
スタイル・シート
スタイル・シートでメッセージを組み換えるときは、XSLTノードを使用
コンパイル済みスタイル・シートをキャッシュして高速に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でなければならない
22
その他の主な機能
データベースへのアクセス
JMSプロバイダーへのアクセス
Webサービス・サポート
トランザクション・サポート
スケジュール実行
Aggregationフロー
Publish/Subscribe通信
Javaでの開発
XMLツール
デバッガー
コード変換テーブルのカスタマイズ
統計レポート
23
24
データベース・アクセス
メッセージ・フローからデータベースの参照・更新が可能
データベース・アクセス用のESQLを提供
„ 複数結果セットのストアード・プロシージャーの呼び出しにも対応
GUIマッピングでのデータベース・アクセスも可能
複数結果セットのストアード・プロシージャー(DB2)
CREATE PROCEDURE DB_PROC(IN p1 INTEGER, IN p2 INTEGER)
RESULT SETS 2
LANGUAGE SQL
BEGIN
DECLARE c1 CURSOR WITH RETURN FOR
SELECT COL2, COL3 FROM ADDRESSES WHERE COL1 = p1;
DECLARE c2 CURSOR WITH RETURN FOR
SELECT COL2, COL3 FROM ADDRESSES WHERE COL1 = p2;
OPEN c1;
OPEN c2;
RETURN 0;
END @
サポート対象のデータベース:
DB2、Oracle、Sybase、SQL Server、Informix
25
JMSプロバイダーへのアクセス
メッセージ・フローからJMSプロバイダーに接続
JMS 1.1仕様に準拠する任意のJMSプロバイダーをサポート
„JMSプロバイダーが提供するクラス・ファイル(J2SE
1.4.2のサポートが必要)を利用して接続
MQとJMSプロバイダーを中継するために
JMSヘッダー<−>MQヘッダー(MQMD)の変換機能を提供
MQアプリケーション
JMSアプリケーション
XML/JMS
JMSヘッダー−>MQヘッダー(MQMD)
WESB
WMQ
Messaging Engine
(SiBus)
JMSプロバイダー
JMSヘッダー<−MQヘッダー(MQMD)
26
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サービス・リクエスター
27
トランザクション・サポート
メッセージ・フローを1つのトランザクションとして実行
メッセージ・フローからのMQに対する資源更新を1つの作業単位(UOW)で処理
障害発生時のメッセージの消失/重複を排除
MQGET Syncpoint
MQPUT Syncpoint
MQCMIT(または、MQBACK)
グローバル・トランザクションのサポート
データベース更新、JMSプロバイダーに対する更新を含めて1つの作業単位(UOW)で処理
MQをコーディネータとした2フェーズ・コミット
JMSプロバイダー
MQGET Syncpoint
SQL.UPDATE
JMS.send(transacted)
28
MQCMIT(または、MQBACK)
スケジュール実行
メッセージ・フローのタイマー実行
外部からのイベント(メッセージの入力など)なしに、タイマー起動でメッセージ・フローを実行
利用例:「定期的にデータベースからデータを抽出して配信」
利用例: 「メッセージ・フローの後処理として、特定の時刻に別のメッセージ・フローを実行」
29
Aggregationフロー
1:Nの並行リクエスト/リプライ通信
要求メッセージを分解し、複数のサーバー・アプリケーションにMQ経由で送信
−−> MQの非同期通信のメリットを生かして並行実行
複数の応答メッセージを1つに集約した応答メッセージを返信
予約サービスを並行に実行
ホテル予約サービス
旅行予約業務
ブローカー
飛行機予約サービス
サーバー・アプリケーション
クライアント・アプリケーション
サーバー・アプリケーション
30
Publish/Subscribe通信
Publish/Subscribe通信のブローカー.MQが提供するブローカーよりも高機能
コンテンツ・ベースのメッセージ配信
„トピックに加え、メッセージの内容を条件指定(例.Body.FLD01
> 1)してサブスクライブ可能
フォーマット変換したメッセージの配信が可能
„サブスクリプション・ポイントと組み合わせれば、サブスクライバーは任意のフォーマットでメッセージを受信
スケーラビリティ、可用性向上の機能
„階層型・集合型の2種類のブローカー間接続のサポート、クローン・ブローカーのサポート
サブスクリプション・ポイント :
メッセージ配信のPublicationノードを指定機能
パブリッシャー
サブスクリプション・ポイント:CWF
サブスクライバー
サブスクライバー
サブスクライバー
サブスクリプション・ポイント:XML
サブスクライバー
31
Publish/Subscribe通信
<参考>
Publish/Subscribe通信とは
メッセージに付与されたトピック(情報の種類)をベースにメッセージを配信
サブスクライバー(情報の消費者)は、トピックへのサブスクライブ要求(購読要求)をブローカーに送信
パブリッシャー(情報の提供者)は、トピックを付与したメッセージをブローカーに送信
ブローカーがパブリッシャーとサブスクライバーの仲介を行う
„トピックにサブスクライブしているサブスクライバーにメッセージを配信
パブリッシャー
パブリッシャー
「バイク」
「株価」
ブローカー
サブスクライバー
サブスクライバー
「株価」にサブスクライブ
サブスクライバー
「株価」と「バイク」にサブスクライブ
「バイク」にサブスクライブ
32
Javaコードの実行
J2SE 1.4.2、1.5のJavaコードを実行グループ内で実行可能
ESQLからJava関数(static method)を呼び出し
„Compute、Database、Filterノードから既存のJava関数を呼び出して利用
メッセージ・ツリーにアクセスためのJava APIを提供
„JavaComputeノードを使えば、ESQLでなくJava言語でメッセージ・フローのロジックを開発
ブローカー(bipservice、bipbroker)
実行グループ(DataFlowEngine)
JNI
JVM
実行グループにJVMをロード.JNI経由でJAVAコードを実行
ブローカーはデフォルトではJRE1.4.2を使用.JRE1.5を使用するときは、プロファイル(/opt/IBM/mqsi/6.0/mqsimqsiprofile)の
MQSI_JREPATH環境変数の編集が必要
MQSI_JREPATH=${MQSI_FILEPATH}/jre −−> MQSI_JREPATH=${MQSI_FILEPATH}/jre15
33
34
XMLツール
RAD(Rational Application Developper)と同一のXMLツールを付属
DTD、XMLスキーマ、 XML、XSLファイルの作成・テストが可能
35
デバッガー
メッセージ・フローのデバッグ・ツールが付属
ブレーク・ポイントを設定し、メッセージのパース状況などを確認可能
同一ツールで、ESQL、GUIマッピング、Javaコードをデバッグ可能
36
メッセージ・ツリーのパース状況
コード変換テーブルのカスタマイズ
コード変換に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/
37
統計レポート
統計レポートの出力をサポート
メッセージ・フローが処理したメッセージ数の把握などが可能
<メッセージ・フロー統計の出力項目>
情報カテゴリ
項目
ヘッダー
統計種別(Snapshot or Archive),出力理由(インターバル経過,ブローカー停止,・・・)
メッセージ・フロー
メッセージ・フロー名,メッセージ・フローUUID
実行グループ
実行グループ名,実行グループUUID
ブローカー
ブローカー名,ブローカーUUID
インターバル
統計開始日時,統計終了日時,
メッセージ
処理メッセージ数,処理メッセージの総バイト数,最小/最大メッセージ長
処理時間
最小/最大/トータルElapsedタイム, 最小/最大/トータルCPUタイム
アイドル時間
メッセージ入力待ちの時間(Elapsedタイム,CPUタイム)
スレッド
割り当てスレッド数,最大実行スレッド数
エラー
MQGETのエラー回数(HTTPInputを含む),パース・エラーを含んでいたメッセージ数、
エラー処理されたメッセージの数,AggregateReplyのタイムアウト回数
同期点処理
コミット回数,バックアウト回数
メッセージ・フロー統計の情報を補足・詳細化するスレッド統計、ノード統計、ターミナル統計があります
38
構成例
ブローカーが停止すると、全連携業務が停止.ブローカーは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
39
JMS通信を行う周辺システムが参照す
るLDAPサーバーに同期レプリケーション
メッセージ・フロー例
シナリオ
複数の処理要求を1つのMQメッセージで受信
個々の処理要求に分解.データ・フォーマット(CWF−>XML)、
プロトコル(MQ−>HTTP)を変換し、サービス・プロバイダーに処理をリクエスト
処理結果を1つのMQメッセージにまとめ、応答メッセージを返却
サービス・プロバイダー
HTTP
処理1
MQアプリケーション
MQMD
MQMD
処理1
結果1
処理2
結果2
40
・・・
・・・
処理2
結果1
結果2
パフォーマンス
ケース:XML−>CWF変換
XML
CWF
測定環境:pSeries 570 Power 5 with 8 * 1.5Ghz processors 16 GB RAM
メッセージ・フローを1インスタンス(スレッド)で実行しているため、CPUを使い切れていない.
複数インスタンスで実行すれば、Message Rateも比例して伸びる
パフォーマンス・レポートの入手先
http://www-306.ibm.com/software/integration/support/supportpacs/product.html#wmqi
41
42
Fly UP