Apache Camel - Giriş

Şehrinizdeki Hindistan'daki Bigbasket gibi büyük bir çevrimiçi marketin sizi onlar için bir BT çözümü tasarlamaya davet ettiği bir durumu düşünün. Kararlı ve ölçeklenebilir çözüm, bugün karşılaştıkları yazılım bakım sorunlarının üstesinden gelmelerine yardımcı olacaktır. Bu çevrimiçi mağaza, son on yıldır işini yürütüyor. Mağaza, müşterilerinden farklı ürün kategorileri için çevrimiçi siparişleri kabul eder ve bunları ilgili tedarikçilere dağıtır. Örneğin, sabun, yağ ve süt sipariş ettiğinizi varsayalım; bu üç ürün ilgili üç tedarikçiye dağıtılacaktır. Üç tedarikçi daha sonra tedariklerini ortak bir dağıtım noktasına gönderecek ve buradan tüm sipariş teslimat merkezi tarafından karşılanacaktır. Şimdi bugün karşı karşıya oldukları soruna bakalım.

Bu mağaza faaliyete geçtiğinde, siparişleri virgülle ayrılmış bir düz metin dosyasında kabul ediyordu. Mağaza, belirli bir süre boyunca mesaj odaklı sipariş vermeye geçti. Daha sonra, bazı yazılım geliştiricileri XML tabanlı bir sipariş yerleştirme önerdi. Sonunda, mağaza bir web hizmeti arayüzünü bile uyarladı. Şimdi, işte asıl sorun geliyor. Siparişler artık farklı formatlarda geliyor. Açıkçası, şirket sipariş kabul formatını her yükselttiğinde, müşterinin kafasında karışıklıklara neden olmamak için önceden konuşlandırılan arayüzü kırmak istemiyordu.

Aynı zamanda, iş büyümeye devam ederken mağaza, repertuarına periyodik olarak yeni tedarikçiler ekledi. Bu tür her tedarikçinin siparişleri kabul etmek için kendi protokolü vardı. Bir kez daha entegrasyon sorunuyla karşı karşıyayız; Uygulama mimarimiz, benzersiz sipariş verme mekanizmalarına sahip yeni tedarikçileri barındıracak şekilde ölçeklenebilir olmalıdır.

Durumun tamamı aşağıdaki şekilde gösterilmektedir -

Şimdi, Apache Camel'in açıklanan senaryo için zarif, bakımı yapılabilir, ölçeklenebilir bir çözüm mimarisi sağlamak için nasıl kurtarmanıza gelebileceğini görelim.

Çözüme geçmeden önce küçük bir varsayım yapmamız gerekiyor. Bu eğitimdeki tüm tartışmalar için, çevrimiçi siparişlerin XML biçiminde verildiğini varsayacağız. Tartışmalarımız boyunca kullanacağımız sipariş dosyası için tipik bir format burada gösterilmektedir -

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

Bu eğitimde Camel örneklerini göstermek için yukarıdaki XML şablonunu kullanacağız.