Apache-camel-introduction
Apache Camel-はじめに
インドの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の例を説明します。