PowerPoint Presentation

全文

(1)

IBM Integration Bus Callable Flow

2017.09

日本アイ・ビー・エム システムズ・エンジニアリング(株)

(2)

はじめに

 当資料はIIBv10.0.0.4で新規に提供されたCallableフロー機能についてご紹介しています。

 記載内容の一部は実機検証による動作結果を基にしています。

当資料に記載している内容は可能な限り稼動確認を取っておりますが、日本アイ・ビー・エム株式会社、及び日本アイ・ビー・エム システムズ・エ ンジニアリング株式会社の正式なレビューを受けておらず、当資料で提供される内容に関して日本アイ・ビー・エム株式会社、日本アイ・ビー・エ ム システムズ・エンジニアリング株式会社は何ら保証するものではありません。

従って、当資料の利用またはこれらの技法の実施はひとえに使用者の責任において為されるものであり、当資料によって受けたいかなる被害に関し ても一切の補償をするものではありません。

(3)

目次

 Callableメッセージ・フローとは

Callableメッセージ・フローとは

Callableメッセージ・フローの配置パターン

スイッチサーバと接続エージェント

スイッチサーバと接続エージェントの構成

スイッチサーバの障害時の動作

 同期呼び出しと非同期呼び出し

同期呼び出し

CallableFlowInvokeノード

CallableInputノード / CallableReplyノード

負荷分散構成

非同期呼び出し

CallableFlowAsyncInvokeノード

CallableFlowAsyncReponseノード

 Callableメッセージ・フローの配置パターン

(4)

Callable メッセージ・フローとは

(5)

Callable メッセージ・フローとは

 Callable メッセージ・フロー機能により、特定のメッセージ・フローから異なるメッセージ・フローを直接 呼出すことが可能

10.0.0.4でCallableメッセージ・フローをサポート

10.0.0.8で非同期Callableメッセージ・フローをサポート

 呼び出し側のフロー(Calling Flow)と呼び出される側のフロー(Callable Flow)に処理を分離

同期的な呼び出しと非同期的な呼び出しが可能

同期呼び出し

CallableFlowInvokeノード (Calling flow)

CallableInput / CallableReplyノード (Callable Flow)

非同期呼び出し

CallableFlowAsyncInvokeノード (Calling flow)

CallableInput / CallableReplyノード (Callable Flow)

CallableFlowAsyncResponseノード (Response Flow)

 呼び出し側のフローは同一統合サーバ内だけでなく、異なる統合サーバ、異なる統合ノード上に配置可能

オンプレミスのIIBとIIB on Cloud(以下、IIBoC)にフロー処理を分離して配置も可能

異なる統合サーバ、異なる統合ノード上に配置する場合、フロー同士はスイッチ・サーバと接続エージェントを使用して 通信

異なる統合サーバ、異なる統合ノード上に配置する構成はWindowsとLinuxでのみサポート

同一統合サーバ上に配置する構成は、全プラットフォームでサポート

(6)

Callable メッセージ・フローとは

 Callingフローからは、Callableフローのエンドポイント名とアプリケーション名をキーに呼び出す

Callableフローはアプリケーション内にのみ実装可能

エンドポイント名はCallableInputノードのプロパティで設定

同一のエンドポイント名とアプリケーション名を持つCallableフロー間で処理の負荷分散も可能

 CallingフローとCallableフローの関係はN:M

1つのCallingフローから複数のCallableフローを呼び出すことも可能

CallableフローにInvokeノードを実装して、さらに他のCallableフローを呼び出すことも可能

複数のCallingフローから1つのCallableフローを呼び出すことも可能

 CallingフローのInvokeノードではメッセージをフル・パースする

バリデーションに失敗するとロールバックされる

CallableInputノードではデータモデルを指定するプロパティはなく、パース/シリアライズは行わない

 利用のメリット

実行負荷の高い処理を分離することが可能

複数のフローから呼び出せるので再利用性が高まる

効率的な実行環境の選択が可能

(7)

Callable メッセージ・フローの配置パターン

 CallingフローとCallableフローはIIBでもIIBoCでも実行可能

両者をIIBの同一統合サーバ内に配置することも、異なる統合サーバに配置することも可能

両者をIIBとIIBoCに分離して配置することも可能

 Callable メッセージ・フローの配置パターン

「Switch要」の配置パターンの場合は、スイッチ・サーバと接続エージェントの構成が必要

No Callingフロー Callableフロー Switchの要否 備考

1 IIB IIB

(Callerと同一の統合サーバ)

N 同一統合サーバ内で実行した場合、CallerフローとCallableフローのアプリ ケーションが異なる場合でもスイッチサーバは不要

2 IIB on Cloud IIB on Cloud Y スイッチサーバは自動作成される

3 IIB IIB on Cloud Y スイッチサーバはon Cloudで管理される

オンプレミス側の接続エージェントを構成するためのファイルをクラウド からダウンロード

4 IIB on Cloud IIB Y スイッチサーバはon Cloudで管理される

オンプレミス側の接続エージェントを構成するためのファイルをクラウド からダウンロード

5 IIB IIB

(Callerと異なる統合サーバ)

Y スイッチサーバと接続エージェントを構成するためのファイルを作成する 必要あり

6 IIB on Cloud IIB on Cloud

(Callerと異なる統合サーバ)

Y On-demand subscriptionで、1つのスペースに複数の統合サーバを稼動で きる場合

スイッチサーバは自動作成される

(8)

スイッチ・サーバと接続エージェント

 CallingフローとCallableフローを異なる統合サーバ上で稼動させる場合は、フロー間の通信のためにスイッ チ・サーバと接続エージェントが必要

CallingフローとCallableフローがIIB on Cloudで稼動する場合は、常にスイッチ・サーバ経由での呼び出しとなる

クラウド上でスイッチ・サーバが自動構成され、ユーザーの作業は不要

CallingフローとCallableフローがIIBとIIB on Cloudに分かれる場合は、クラウド上でスイッチ・サーバが自動構成される

IIB側ではCloudから構成ファイルをダウンロードして接続エージェントを手動構成

CallingフローとCallableフローがオンプレ環境の異なる統合サーバに分かれる場合は、スイッチ・サーバ、接続エージェン トを手動で構成する必要がある

IIB統合ノード#1 IIB統合サーバA

Callableフロー・アプリケーション Callingフロー・アプリケーション

IIB統合ノード#2 IIB統合サーバB

エージェント エージェント

スイッチ・

サーバ

(9)

スイッチ・サーバと接続エージェント

 スイッチ・サーバは特殊な統合サーバでデータのルーティングを実施

統合ノード名 IIBSWITCH_NODE、統合サーバ名 IIBSWITCH_SERVERで定義が作成される

スイッチ・サーバに対するデプロイは不可

iibswitchコマンドを使用してスイッチ・サーバを起動/停止

起動

停止

mqsilistコマンドで稼働状況を確認

C:¥Program Files¥IBM¥IIB¥10.0.0.9>mqsilist IIBSWITCH_NODE ---

BIP1286I: 統合ノード 'IIBSWITCH_NODE' の統合サーバー 'IIBSWITCH_SERVER' が実行中です。

BIP8071I: コマンドが完了しました。

iibswitch start switch

iibswitch stop switch

(10)

スイッチ・サーバと接続エージェント

 接続エージェントはフローがスイッチ・サーバとセキュアに通信するために必要な証明書を持つ

接続エージェントはCallingフロー、Callableフローが稼動する各統合サーバ上に構成

iibswitchコマンドを使用して起動/停止

起動

停止

mqsireportpropertiesコマンドで稼働状況を確認

 1つの接続エージェントが複数のスイッチ・サーバと接続することはできない

iibswitch start agentp

mqsireportproperties 統合ノード名 -e 統合サーバ名 –o ComIbmIIBSwitchManager/AgentX –r ComIbmIIBSwitchManager

uuid='ComIbmIIBSwitchManager' agentx

url='wss://localhost:9011'

started='TRUE'

name='agentx'

iibswitch stop agentp

(11)

スイッチ・サーバと接続エージェントの構成(オンプレ間接続)

 オンプレで異なる実行グループ上にCallableフローを配置する場合

1.

事前準備:構成ファイルと証明書の生成

IIBコマンド・コンソールでiibcreateswitchcfgコマンドを実行

2.

スイッチ・サーバの構成

iibswitchコマンドを使用してスイッチ・サーバを構成

スイッチ・サーバの稼動状況を確認 コマンド実行例(Win):

>iibcreateswitchcfg /output c:¥temp¥iib

Generated self signed certificate file 'c:¥temp¥iib¥adminClient.p12' Generated switch configuration file 'c:¥temp¥iib¥switch.json'

Generated agentx configuration file 'c:¥temp¥iib¥agentx.json'

指定ディレクトリに2つのJSON構成ファイルと証 明書が生成される

(ディレクトリは任意。例ではC:¥temp¥lib)

switch.json: スイッチ・サーバの構成に使用

agentx.json: 接続エージェントの構成に使用 コマンド実行例(Win):

>iibswitch create switch /config c:¥temp¥iib¥switch.json Creating iibswitch component 'switch', please wait...

iibswitch created and started.

コマンド実行例(Win):

>mqsilist IIBSWITCH_NODE ---

BIP1286I: 統合ノード 'IIBSWITCH_NODE' の統合サーバー 'IIBSWITCH_SERVER' が実行中です。

統合ノード名IIBSWITCH_NODE、統合サーバ名 IIBSWITCH_SERVERでスイッチ・サーバが構成 され、起動される

(12)

3.

接続エージェントの構成

mqsichangepropertiesコマンドを使用して接続エージェントを構成

Callingフロー、Callableフローをデプロイする各統合サーバに生成したagentx.jsonを配布し、コマンドを実行

統合ノードを再起動して設定を反映

mqsireportpropertiesコマンドでスイッチ・サーバや接続エージェントが稼動していることを確認 コマンド実行例(Win):

>mqsichangeproperties IIB10009 -e CALLING_EG -o

ComIbmIIBSwitchManager -n agentXConfigFile -p C:¥temp¥iib¥agentx.json BIP8071I: コマンドが完了しました。

>mqsichangeproperties IIB10009 -e CALLABLE_EG -o

ComIbmIIBSwitchManager -n agentXConfigFile -p C:¥temp¥iib¥agentx.json BIP8071I: コマンドが完了しました。

コマンド例(Win):

>mqsireportproperties IIBSWITCH_NODE -e IIBSWITCH_SERVER -o ComIbmIIBSwitchManager/Switch –r

>mqsireportproperties 統合ノード名 -e 統合サーバ名 -o ComIbmIIBSwitchManager/AgentX -r

スイッチ・サーバと接続エージェントの構成(オンプレ間接続)

(13)

スイッチ・サーバと接続エージェントの構成(IIBoCとの接続)

 IIBとIIB on Cloud間でCallableフローを稼動させる場合

スイッチ・サーバはIIB on Cloud上で自動構成される

オンプレ環境の統合サーバ上で接続エージェントを手動で構成

接続エージェントの構成ファイルはIIB on Cloud側で作成済みのものをダウンロードして使用する

1.

IIB on Cloud上で「Callable Flows」を選択し、「Set up an agent」をクリック

(14)

2.

「Download Configuration」をクリックし、構成ファイルをダウンロードする

3.

オンプレミス環境でダウンロードした構成ファイルを使用して接続エージェントを構成

4.

「Test Agent」をクリックし、オンプレ環境のエージェントから接続できていることを確認 コマンド実行例(Win):

>mqsichangeproperties IIB10009 -e CALL_C_EG -o

ComIbmIIBSwitchManager -n agentXConfigFile -p DownloadFilePath¥agentx.json BIP8071I: コマンドが完了しました。

「Test Agent」ボタンが以下になれば 接続OK

スイッチ・サーバと接続エージェントの構成(IIBoCとの接続)

(15)

スイッチ・サーバの障害時の動作

 スイッチ・サーバの障害時、接続エージェントはスイッチ・サーバへの接続エラーを出力し続ける

スイッチ・サーバ障害時はCallingフローからCallableフローの呼び出しは失敗

BIP6420Eが出力される

“Remote callable flow agent is enabled, but the link is not established”

スイッチ・サーバーが復旧し起動すると、自動的に再接続

 スイッチ・サーバが障害復旧するまではスイッチ・サーバ経由でCallableフローを呼ぶ処理は停止

注)幕張のテスト環境での動作検証結果 を元に記載しています。

今後のFix適用などにより動作が変更され る可能性があります。

(16)

同期呼び出しと非同期呼び出し

(17)

同期呼び出し

 同期呼び出しはCallingフローからCallableフローを同期的に呼び出す

CallableFlowInvokeノードでCallableフローを呼び出し、応答を待機 (Calling Flow)

CallableInput で要求を受け付け、CallableReplyノードで応答を返す (Callable Flow)

Callableフロー

Callingフロー

(18)

CallableFlowInvokeノード

 CallableFlowInvokeノード

Callableフローを呼び出すためのノード

ターゲットのアプリケーション名とエンドポイント名を指定して、呼び出し先のCallableフローを特定

 CallableFlowInvokeノードの主なプロパティ

タブ 設定項目 必須 説明

Basic Target Application Y 呼び出すCallableフローが含まれるアプリケーション名

Target Endpoint Name Y 呼び出すCallableフローのCallableInputノードで設定されたエンドポイント名 Request timeout (sec) デフォルト120秒

時間以内に応答が戻らない場合はエラー Call Preference デフォルト「Prefer local calls」

Prefer local calls:Callableフローが同一の統合サーバで稼動する場合

Remote calls only:Callableフローが異なる統合サーバで稼動またはCallingフ ローとCallableフローがオンプレとオンクラウドで分かれる場合

In --- --- Failure --- Out --- Error

(19)

CallableFlowInvokeノード

 CallableFlowInvokeノードに関係するLocalEnvironment変数

LocalEnvironment.Destination.CallableFlow.Invokeツリーの子エレメントとして指定

LocalEnvironmentを使用してCallableFlowInvokeノードの一部プロパティを動的設定可能

LocalEnvironment変数 上書きするノードプロパティ 備考

requestTimeout Basicタブ:Request timeout (sec) Integerで指定

callPreference Basicタブ:Call Preference ‘PreferLocal’ または’RemoteOnly’を指定 targetApplication Basicタブ:Target Application

targetEndpointName Basicタブ:Target Endpoint Name

(20)

 CallableInputノード

Callingフローからの呼び出し要求を受け付けるノード

CallingフローはCallableフローのアプリケーション名とエンドポイント名を指定してアクセス

Callableフローはアプリケーションとして実装する必要がある

1つの統合サーバ内でアプリケーション名とエンドポイント名のペアはユニークであることが必須

同じアプリケーション名とエンドポイント名を持つCallableフローを異なる統合サーバにデプロイ可能(負荷分散構成となる)

 CallableInputノードの主なプロパティ

 CallableReplyノード

Callingフローに応答を返すノード

特にプロパティ設定は不要

CallableInputノード/CallableReplyノード

タブ 設定項目 必須 説明

Basic Endpoint Name Y Callableフローを識別するための名前

Callingフローからこの値を指定して要求をなげる --- Failure

--- Out --- Catch

In --- --- Failure --- Out

(21)

統合サーバ C

負荷分散構成

 複数のCallableフローで共通のアプリケーションとエンドポイントを持ち、それぞれを異なる統合サーバで 稼動させた場合、スイッチサーバーはロードバランサーとして動作する

Callingフロー

Callableフロー

Callableフロー

スイッチ サーバ

統合サーバ B

統合サーバ A

10件リクエストを送ると統合サーバB上 のCallableフローと統合サーバC上の Callableフローが交互に5回づつ呼び出 される

(22)

負荷分散構成

 一方のCallableフローがCallingフローと同一統合サーバ上で稼動する場合

CallableFlowInvokeのCall Preferenceプロパティが「Prefer local calls」の場合

通常時はローカルのCallableフローのみ呼び出す

ローカルのCallableフローがダウンするとリモートのCallableフローを呼び出す

CallableFlowInvokeのCall Preferenceプロパティが「Remote calls only」の場合

ローカルのCallableフローとリモートのCallableフローとの間で負荷分散を実施

Callingフロー

Callableフロー

Callableフロー

スイッチ サーバ

統合サーバ B 統合サーバ A

CallableFlowInvokeノード

(23)

非同期呼び出し

 非同期呼び出しはCallingフローからCallableフローを呼び出し、応答をResponseフローで非同期に待つ

CallableFlowAsyncInvokeノードでCallableフローを呼び出し、応答は待機しない (Calling flow)

CallableInput で要求を受け付け、CallableReplyノードで応答を返す(Callable Flow)

CallableFlowAsyncResponseノードで応答を受信し、処理を開始 (Response Flow)

 非同期用のノードを含むCalling FlowとResponse Flow間でデータを共有したい場合は、Environmentツ リーのUserContextフォルダーを使用可能

Callableフロー

Callingフロー(呼び出し) Responseフロー(応答受信)

(24)

 CallableFlowAsyncInvokeノード

Callableフローを非同期に呼び出すためのノード

ターゲットのアプリケーション名とエンドポイント名を指定して、呼び出し先のCallableフローを特定

 CallableFlowAsyncInvokeノードの主なプロパティ

CallableFlowAsyncInvokeノード

タブ 設定項目 必須 説明

Basic Unique identifier Y デフォルトでユニークIDが設定される

CallableFlowAsyncResponseノードとの紐付けに使用される Target Application Y 呼び出すCallableフローが含まれるアプリケーション名

Target Endpoint Name Y 呼び出すCallableフローのCallableInputノードで設定されたエンドポイント名 Request timeout (sec) デフォルト120秒

時間以内に応答が戻らない場合はエラー Call Preference デフォルト「Prefer local calls」

Prefer local calls:Callableフローが同一の統合サーバで稼動する場合

Remote calls only:Callableフローが異なる統合サーバで稼動またはCallingフ ローとCallableフローがオンプレとオンクラウドで分かれる場合

In --- --- Failure --- Out

(25)

CallableFlowAsyncInvokeノード

 CallableFlowAsyncInvokeノードに関係するLocalEnvironment変数

LocalEnvironment.Destination.CallableFlow.Invokeツリーの子エレメントとして指定

LocalEnvironmentを使用してCallableFlowInvokeノードの一部プロパティを動的設定可能

 CallableFlowAsyncInvokeノードを含むフローとCallableFlowAsyncResponseノードを含むフロー間で データを共有したい場合は、EnvironmentツリーのUserContextフォルダを使用

Envitonment.CallableFlow.UserContext、またはその子エレメントに引き継ぐ値をセット

呼ばれたフロー側ではこの値にアクセス不可

LocalEnvironment変数 上書きするノードプロパティ 備考

requestTimeout Basicタブ:Request timeout (sec) Integerで指定

callPreference Basicタブ:Call Preference ‘PreferLocal’ または’RemoteOnly’を指定 targetApplication Basicタブ:Target Application

targetEndpointName Basicタブ:Target Endpoint Name

設定例:

SET Environment.CallableFlow.UserContext = ‘myData’;

SET Environment.CallableFlow.UserContext.c1 = ‘testData’;

(26)

 CallableFlowAsyncResponseノード

CallableFlowAsyncInvokeノードによって非同期に呼び出されたCallableフローからの応答を受け付けるためのノード

ターゲットのアプリケーション名とエンドポイント名を指定して、呼び出し先のCallableフローを特定

 CallableFlowAsyncResponseノードの主なプロパティ

CallableFlowAsyncReponseノード

タブ 設定項目 必須 説明

Basic Unique identifier Y ペアで使用するCallableFlowAsyncInvokeノードに設定されたユニークIDを指 定する

--- Failure --- Out --- Catch

(27)

Callable メッセージ・フローの

配置パターン

(28)

 オンプレ環境の同一統合サーバ上で稼動するケース

Callableフローのアプリケーション名とエンドポイント名を指定して呼び出し

IIB-IIB

IIB統合ノード IIB統合サーバ

Callableフロー・アプリケーション(C1_CallableApp)

Callingフロー・アプリケーション(C1_CallingApp)

(29)

IIB-IIB (異なる統合サーバ)

 オンプレ環境の異なる統合サーバ上で稼動するケース

Callableフローのアプリケーション名とエンドポイント名を指定して呼び出し

異なる統合サーバ上にデプロイされたCallableフローの通信のため、手動でスイッチ・サーバや接続エージェントの構成 が必要

IIB統合ノード

IIB統合サーバ(CALLING_EG)

Callableフロー・アプリケーション(C1_CallableApp)

Callingフロー・アプリケーション(C2_CallingApp)

IIB統合サーバ(CALLABLE_EG)

エージェント エージェント

スイッチ・

サーバ

(30)

IIB on cloud

 IIB on Cloud環境の同一統合サーバ上で稼動するケース、異なる統合サーバ上で稼動するケース

Callableフローからの呼び出しはスイッチ・サーバ経由

ただしユーザーがスイッチ・サーバの構成をする必要はなし(自動構成)

インテグレーション

Callableフロー・アプリケーション Callingフロー・アプリケーション

スイッチ・

サーバ

IIB on Cloud

(31)

IIB-IIB on Cloud

 オンプレミス環境のIIBとIIB on Cloud環境上で稼動するケース

スイッチ・サーバ経由で通信

IIB on Cloud側でスイッチ・サーバを自動構成

オンプレミス側はIIB on Cloud側で生成された接続エージェントの構成ファイルをダウンロードし、接続エージェント を手動構成

IIB on Cloud インテグレーション

Callingフロー・アプリケーション

IIB統合サーバ

Callableフロー・アプリケーション IIB統合ノード

スイッチ

サーバ

IIB on Cloud IIB統合サーバ

Callingフロー・アプリケーション

インテグレーション

Callableフロー・アプリケーション IIB統合ノード

スイッチ サーバ

Updating...

参照

Updating...

関連した話題 :

Scan and read on 1LIB APP