Apache Camel - 簡介



假設您所在的城鎮有一家大型線上雜貨店,例如印度的 Bigbasket,邀請您為他們設計一個 IT 解決方案。這個穩定且可擴充套件的解決方案將幫助他們克服目前面臨的軟體維護問題。這家線上商店已經運營了十年。商店接受客戶對不同類別產品的線上訂單,並將其分發給相應的供應商。例如,假設您訂購了一些肥皂、油和牛奶;這三件商品將分別分發給三個相應的供應商。然後,這三個供應商將把他們的貨物傳送到一個共同的配送點,從那裡由配送中心完成整個訂單。

當這家商店開始營業時,它接受以逗號分隔的純文字檔案形式提交的訂單。一段時間後,商店轉向了訊息驅動的訂單下達方式。後來,一些軟體開發者建議使用基於 XML 的訂單下達方式。最終,商店甚至採用了 Web 服務介面。現在,真正的難題來了。訂單現在採用不同的格式。顯然,每次公司升級訂單接受格式時,都不想破壞先前部署的介面,以免造成客戶的混淆。

同時,隨著業務不斷發展,商店定期增加了新的供應商。每個供應商都有自己接受訂單的協議。我們再次面臨整合問題;我們的應用程式架構必須具有可擴充套件性,以適應具有其獨特訂單下達機制的新供應商。

整個情況如下圖所示:

Application Architecture

現在,讓我們看看 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 示例。

廣告
© . All rights reserved.