Apache Camel - Pendahuluan

Pertimbangkan situasi di mana toko grosir online besar di kota Anda seperti Bigbasket di India mengundang Anda merancang solusi TI untuk mereka. Solusi yang stabil dan terukur akan membantu mereka mengatasi masalah pemeliharaan perangkat lunak yang mereka hadapi saat ini. Toko online ini telah menjalankan bisnisnya selama satu dekade terakhir. Toko tersebut menerima pesanan online untuk berbagai kategori produk dari pelanggan mereka dan mendistribusikannya ke pemasok masing-masing. Misalnya, Anda memesan sabun, minyak, dan susu; ketiga item ini akan didistribusikan ke tiga pemasok masing-masing. Ketiga pemasok tersebut kemudian akan mengirimkan suplai mereka ke titik distribusi bersama dimana seluruh pesanan akan dipenuhi oleh pusat pengiriman. Sekarang, mari kita lihat masalah yang mereka hadapi saat ini.

Saat toko ini memulai bisnisnya, toko ini menerima pesanan dalam file teks biasa yang dipisahkan koma. Selama periode waktu tertentu, toko beralih ke penempatan pesanan berdasarkan pesan. Belakangan, beberapa pengembang perangkat lunak menyarankan penempatan pesanan berbasis XML. Akhirnya, toko tersebut bahkan mengadaptasi antarmuka layanan web. Sekarang, inilah masalah sebenarnya. Pesanan sekarang datang dalam format yang berbeda. Tentunya, setiap kali perusahaan meningkatkan format penerimaan pesanan, itu tidak ingin merusak antarmuka yang telah diterapkan sebelumnya agar tidak menimbulkan kebingungan di benak pelanggan.

Pada saat yang sama, seiring bisnis yang terus berkembang, toko tersebut secara berkala menambahkan pemasok baru ke repertoarnya. Setiap pemasok memiliki protokolnya sendiri untuk menerima pesanan. Sekali lagi, kami menghadapi masalah integrasi; arsitektur aplikasi kita harus dapat diskalakan untuk mengakomodasi pemasok baru dengan mekanisme penempatan pesanan mereka yang unik.

Seluruh situasi ditunjukkan pada gambar berikut -

Sekarang, mari kita lihat bagaimana Apache Camel dapat membantu Anda untuk memberikan arsitektur solusi yang elegan, dapat dipelihara, dan dapat diskalakan untuk skenario yang dijelaskan.

Sebelum kita melanjutkan dengan solusinya, kita perlu membuat asumsi kecil. Untuk semua diskusi dalam tutorial ini, kami akan berasumsi bahwa pesanan online ditempatkan dalam format XML. Format tipikal untuk file pesanan yang akan kami gunakan selama diskusi kami ditampilkan di sini -

<?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>

Kami akan menggunakan template XML di atas untuk mengilustrasikan contoh Unta dalam tutorial ini.