ApacheCamel-はじめに
インドのBigbasketのようなあなたの町の大きなオンライン食料品店があなたに彼らのためのITソリューションを設計するように誘う状況を考えてみてください。安定したスケーラブルなソリューションは、今日直面しているソフトウェアメンテナンスの問題を克服するのに役立ちます。このオンラインストアは、過去10年間ビジネスを運営しています。ストアは、顧客からのさまざまなカテゴリの製品のオンライン注文を受け付け、それらをそれぞれのサプライヤに配布します。たとえば、石鹸、油、牛乳を注文するとします。これらの3つのアイテムは、3つのそれぞれのサプライヤーに配布されます。次に、3つのサプライヤが共通の配布ポイントにサプライ品を送り、そこから配送センターが注文全体を処理します。それでは、彼らが今日直面している問題を見てみましょう。
このストアが営業を開始したとき、コンマで区切られたプレーンテキストファイルで注文を受け付けていました。ある期間にわたって、ストアはメッセージ主導の注文に切り替えました。その後、一部のソフトウェア開発者はXMLベースの注文を提案しました。最終的に、ストアはWebサービスインターフェイスを採用しました。さて、ここに本当の問題があります。現在、注文はさまざまな形式で提供されています。明らかに、会社が注文受付フォーマットをアップグレードするたびに、顧客の心に混乱を引き起こさないように、以前に展開されたインターフェースを壊したくありませんでした。
同時に、ビジネスが成長し続けるにつれて、ストアは定期的に新しいサプライヤーをレパートリーに追加しました。このような各サプライヤには、注文を受け入れるための独自のプロトコルがありました。もう一度、統合の問題に直面します。当社のアプリケーションアーキテクチャは、独自の発注メカニズムを備えた新しいサプライヤに対応するためにスケーラブルである必要があります。
全体の状況を次の図に示します-
ここで、Apache Camelがどのように救助に来て、説明されているシナリオにエレガントで保守可能でスケーラブルなソリューションアーキテクチャを提供できるかを見てみましょう。
ソリューションを進める前に、小さな仮定を立てる必要があります。このチュートリアルのすべての説明では、オンライン注文はXML形式で行われると想定しています。ディスカッション全体で使用する注文ファイルの一般的な形式を次に示します-
<?xml version = "1.0" encoding = "UTF-8"?>
<OrderID Order = "001">
<order product = "soaps">
<items>
<item>
<Brand>Cinthol</Brand>
<Type>Original</Type>
<Quantity>4</Quantity>
<Price>25</Price>
</item>
<item>
<Brand>Cinthol</Brand>
<Type>Lime</Type>
<Quantity>6</Quantity>
<Price>30</Price>
</item>
</items>
</order>
<order product = "Oil">
<items>
<item>
<Brand>Saffola</Brand>
<Type>Gold</Type>
<Quantity>2</Quantity>
<Price>649</Price>
</item>
<item>
<Brand>Fortune</Brand>
<Type>Sunlite</Type>
<Quantity>1</Quantity>
<Price>525</Price>
</item>
</items>
</order>
<order product = "Milk">
<items>
<item>
<Product>Milk</Product>
<Brand>Amul</Brand>
<Type>Pure</Type>
<Quantity>2</Quantity>
<Price>60</Price>
</item>
</items>
</order>
</OrderID>
このチュートリアルでは、上記のXMLテンプレートを使用して、Camelの例を説明します。