それぞれが数百のメッセージ(金融取引)を含むファイルを生成するレガシーシステムがあります。これらのメッセージを別の形式に変換し、ターゲットシステムに(個別に)送信する必要があります。問題は、ESBがこれらのファイルを直接処理するために受け入れるべきか、それともレガシーシステムとESBの間に、受信したファイルを個々のメッセージに分割し、ESBが(ファイル全体を処理するのではなく)メッセージを個別に処理できるようにするアダプターアプリケーションがあるべきかということです。 )?
最初のソリューションでは、2つのESBフローが必要です。1つ目は、ファイルを新しい形式に変換し、メッセージに分割して、これらのメッセージを一時的な場所に保存します。ファイルには個々のメッセージの変換に必要ないくつかの共通セクションが含まれているため、変換ではファイル全体を処理する必要があります。2番目のフローは、変換された個々のメッセージを(それぞれ個別のDBトランザクションで)取得し、それらをターゲットシステムに渡し、その応答を(同期的または非同期的に)待機します。
2番目のソリューションは、最初のフローを、ファイルを変換し、変換された個々のメッセージに分割して一時的な場所(ローカルファイルシステム)に保存する外部アプリケーションに置き換えます。2番目のフローはESBに残ります。
私たちの目には、最初のソリューションの欠点は、ESBが(最初のフローで)巨大なファイルを処理する必要があることです。これは一般にアンチパターンと見なされます。一方、ESBは、ESBの目的の1つである、レガシーシステムのインターフェイスに直接適応します。
2番目のソリューションでは、アダプターアプリケーションに変換ロジックが含まれます。これは、ESBのもう1つの目的と責任です。
この状況(パターン)に対して一般的に提案される解決策は何ですか?私が見つけたこれらの2つのリンクよりも説明的な参考資料をいくつか提供していただけますか?
https://www.ibm.com/developerworks/wikis/display/esbpatterns/File+Processing
別の参照を 編集します: http ://www.ibm.com/developerworks/webservices/library/ws-largemessaging/