Yanıtlar:
5 ila 10 dakikanız varsa, genellikle insanların Jonathan Anstey'in Apache Camel ile Entegrasyonunu okumasını tavsiye ederim . Camel'in bazı kavramlarına kısa bir giriş ve genel bakış sağlayan iyi yazılmış bir parça ve kod örnekleri ile bir kullanım örneği uygular. İçinde Jonathan şöyle yazıyor:
Apache Camel, entegrasyonu geliştiriciler için daha kolay ve erişilebilir hale getirmeye odaklanan açık kaynaklı bir Java çerçevesidir. Bunu aşağıdakileri sağlayarak yapar:
- yaygın olarak kullanılan tüm Kurumsal Entegrasyon Kalıplarının (EIP) somut uygulamaları
- çok çeşitli taşıma ve API'lara bağlantı
- EIP'leri ve aktarımları birbirine bağlamak için Kullanımı Kolay Etki Alanına Özel Diller (DSL)
İlk bölümde Camel'i tanıtan ücretsiz bir Camel Eylem bölümü de var. Jonathan benimle birlikte bu kitapta ortak yazar.
Bunu daha erişilebilir bir şekilde tanımlamak için ...
Apache Camel'in ne olduğunu anlamak için Kurumsal Entegrasyon Kalıplarının ne olduğunu anlamanız gerekir.
Muhtemelen bildiğimiz şeylerle başlayalım: Singleton deseni, Fabrika deseni, vb; Onlar sadece sizin sorununuzu çözme biçiminizi organize etmenin bir yoludur, fakat kendileri de çözüm değildirler. Bu kalıplar, Tasarım Çeteleri adlı kitaplarını yayınladıklarında, Dörtlü Çetemiz tarafından analiz edildi ve çıkarıldı . Bazılarımızı, kodumuzu en iyi nasıl yapılandıracağımızı düşünmek için muazzam çaba sarf ettiler.
Dörtlü Çete gibi Gregor Hohpe ve Bobby Woolf, Enterprise Integration Patterns (EIP) kitabını , bileşenlerin olabileceği büyük bileşen tabanlı sistemleri en iyi nasıl tasarlayabileceğimize dair bir dizi yeni desen ve plan önerdiler ve belgelediler . aynı işlemde veya farklı bir makinede çalışıyor.
Temel olarak sistemimizi mesaj odaklı olacak şekilde yapılandırmamızı öneriyorlar - burada bileşenler girdi ve çıktı olarak mesajlar kullanarak birbirleriyle iletişim kuruyorlar ve kesinlikle başka bir şey yok. Bize, tüm sistemi birlikte oluşturacak farklı bileşenlerimizde seçebileceğimiz ve uygulayabileceğimiz eksiksiz bir desen seti gösteriyorlar.
Peki Apache Deve nedir?
Apache Camel, EIP'lere, temel nesnelere, yaygın olarak ihtiyaç duyulan uygulamalara, hata ayıklama araçlarına, bir yapılandırma sistemine ve EIP'leri takip etmek için çözümünüzü uygulamak istediğinizde size zaman kazandıracak birçok yardımcıya arabirimler sunar.
MVC'yi alın. MVC teoride oldukça basittir ve bunu herhangi bir çerçeve yardımı olmadan uygulayabiliriz. Ancak iyi MVC çerçeveleri bize kullanıma hazır yapı sağlar ve ekstra mil kat etti ve büyük bir MVC projesi oluştururken ihtiyacınız olan diğer "yan" şeyleri düşündük ve bu yüzden onları çoğu zaman kullanıyoruz.
EIP'ler için Apache Camel tam da budur. EIP'leri takip etmek için çözümlerini uygulamak isteyen insanlar için üretime hazır eksiksiz bir çerçeve.
Proje tanımı oluşturmak karmaşık olmamalıdır.
Diyorum:
Apache Camel, yönlendirme ile mesajlaşma teknolojisi tutkalı. Farklı kaynaklardan farklı hedeflere mesajların aktarılmasını sağlayan mesajlaşma başlangıç ve bitiş noktalarını birleştirir. Örneğin: JMS -> JSON, HTTP -> JMS veya huni FTP -> JMS, HTTP -> JMS, JSON -> JMS
Wikipedia diyor ki:
Apache Camel, yönlendirme ve uyumlulaştırma kurallarını yapılandırmak için bir API (veya bildirimsel Java Etki Alanına Özel Dil) kullanarak Enterprise Entegrasyon Kalıplarının Java nesnesi tabanlı bir uygulamasını sağlayan kural tabanlı bir yönlendirme ve uyumlulaştırma motorudur. Etki alanına özgü dil, Apache Camel'in büyük miktarda XML yapılandırma dosyası olmadan düzenli Java kodu kullanarak IDE'nizdeki yönlendirme kurallarının tür güvenli bir şekilde tamamlanmasını destekleyebileceği anlamına gelir; ancak Spring içindeki XML yapılandırması da desteklenir.
Görmek? Zor değildi, değil mi?
Kısacası:
Sistemleri bağlamak / entegre etmek için bir gereksinim olduğunda, muhtemelen bazı veri kaynaklarına bağlanmanız ve ardından bu verileri iş gereksinimlerinize uyacak şekilde işlemeniz gerekecektir.
Bunu yapmak için:
1) Bunu yapacak özel bir program geliştirebilirsiniz (zaman alıcı ve anlaşılması zor olabilir, diğer geliştiriciler için bakım yapabilirsiniz)
2) Alternatif olarak, standart bir şekilde yapmak için Apache Camel'i kullanabilirsiniz (sizin için zaten geliştirilmiş konektörlerin çoğuna sahiptir, sadece kurmanız ve işlem adı verilen mantığınızı takmanız gerekir):
Deve size şu konularda yardımcı olacaktır:
Apache Camel'i kullanarak sisteminizi anlamayı / sürdürmeyi / başka bir geliştiriciye genişletmeyi kolaylaştıracaksınız.
Apache Camel, Kurumsal Entegrasyon Kalıpları ile geliştirilmiştir. Desenler sistemleri iyi bir şekilde entegre etmenize yardımcı olur :-)
Deve A'dan B'ye mesaj gönderir:
Neden bunun için bütün bir çerçeve? Peki ya sahipseniz:
ftp
, http
, jms
vs.)Şimdi ihtiyacınız var:
Deve size kutudan yukarıdakileri (ve daha fazlasını) sunar:
neyi ve nasıl olduğunu tanımlamanız için harika bir DSL diliyle:
new DefaultCamelContext().addRoutes(new RouteBuilder() {
public void configure() {
from("jms:incomingMessages")
.choice() // start router rules
.when(header("CamelFileName")
.endsWith(".xml"))
.to("jms:xmlMessages")
.when(header("CamelFileName")
.endsWith(".csv"))
.to("ftp:csvMessages");
}
Ayrıca bu ve bu ve Deve Eylem (diğerleri söylediler, mükemmel bir kitap!)
Bir diyagram binlerce tanımdan daha iyidir. Bu Diyagram Deve mimarisini göstermektedir.
ANALOJİYE DAYALI
Deve tabanlı yönlendirme, kendinizi bir Havayolu sahibinin yerine koyarak kolayca anlaşılabilir (örn. American Airlines, Jet Airways).
'Havayolu şirketinizin' amacı, 'yolcuları' bir 'şehir'den diğerine' taşımak'tır. Yolcu taşımak için Boeing, Airbus, HAL gibi farklı 'uçak şirketlerinden uçakları kullanıyorsunuz.
Havayolunuzun panoları, şehirden 'havalimanlarını' kullanarak yolcuları ve havaalanını şehre kullanarak oradan atar. Bir yolcu birden fazla şehre 'seyahat edebilir', ancak her yerde havayolunuzun uçağı ve şehir arasında seyahat etmek için havaalanından geçmeleri gerekir.
Şehirden 'ayrılan' bir yolcunun esasen havayollarınızın uçağına 'geldiğini' unutmayın. Ve şehre 'gelen' bir passeger aslında uçaktan hareket ediyor. Havayolu sahibinin yerinde olduğumuzdan, 'varış yolcusu' ve 'çıkış yolcusu' terimi şehirler perspektifine dayanan konvansiyonel kavramlarımızdan tersine çevriliyor.
Her şehrin aynı 'havaalanı' altyapısı 'çıkış yapan' ve 'gelen' yolcular tarafından kullanılır. Bir havalimanı, giden yolcular için sağlanan 'geliş altyapısından' farklı olan 'çıkış altyapısı' sağlar.
Yolcular, seyahat ederken uçaklarınız tarafından uçağın içinde sunulan çeşitli 'kolaylıklar' nedeniyle etkinliklerine devam edebilirler.
Bunun da ötesinde, havayolu şirketiniz 'yerel dili anlama' ve ya da 'seyahat' için hazırlanma gibi özel tedaviler için salon olanakları da sunmaktadır.
Yukarıda kullanılan birkaç kelimeyi / ifadeyi aşağıdaki ile değiştirelim:
havayolu şirketi: Apache Camel
uçak şirketleri: Nakliye mekanizmaları
havayolu şirketinizin uçağı: Apache Camel'in temel taşıma mekanizması
taşıma: rota
yolcular: mesaj;
şehir: sistem;
havaalanı: Deve Bileşeni;
yerel dilleri anlama: Tür Dönüşümleri;
çıkış: üreten, üretilen
gelen: tüketen, tüketilen
seyahat: yönlendirilmiş
olanaklar: sağlanan
Kelimeleri değiştirdikten sonra, elde edeceğiniz şey:
'Apache Camel'in amacı ' mesajları 'bir' sistemden 'dünyadaki diğerine yönlendirmektir. Apache devesi mesaj yönlendirme için farklı taşıma mekanizmaları kullanır.
Apache Camel, 'from' sisteminin 'Camel tabanlı Bileşeni'ni kullanarak mesajları alır ve' to 'sisteminin' Camel tabanlı Bileşeni'ni kullanarak bırakır. Bir mesaj birden fazla sisteme yönlendirilebilir, ancak her yerde 'Apache Camel'in temel taşıma mekanizması' ve sistem arasında seyahat etmek için 'Deve tabanlı Bileşenler' içinden geçmeleri gerekir.
Sistemden 'üretilen' bir mesajın esasen Apache Camel'in altında yatan taşıma mekanizmasına 'tüketildiğini' unutmayın. Ve bir sistem tarafından tüketilen bir mesaj, esasen 'Apache Camel'in altında yatan taşıma mekanizması' tarafından üretilir.
Camel'i anlamaya çalıştığımızdan, Develerin bakış açısından buradan düşünmeliyiz. Bu nedenle, 'tüketici mesajı' ve 'üretici mesajı' terimlerinin anlamı, sistemin bakış açısına dayanan geleneksel kavramlarımızdan tersine çevrilir.
Aynı 'Deve tabanlı Bileşen' kodlama altyapısı 'üretici mesajı' ve 'tüketici mesajı' tarafından kullanılır. 'Deve tabanlı Bileşen', 'üretici mesajı' için bir 'üretici uç noktası' ve 'tüketici mesajı' için 'tüketici uç noktası' sağlar.
Mesajlar yönlendirilirken Deve tarafından işlenebilir.
Bu yönlendirme üzerine Camel, 'Tür Dönüştürme' ve daha pek çok özellik sunuyor ...
Apache Camel'i anlamaya çalışmadan önce anlamanız gereken şeylerden biri Kurumsal Entegrasyon Kalıplarıdır. Sahadaki herkes aslında bunların farkında değil. Enterprise Integration Patterns (Kurumsal Entegrasyon Kalıpları) kitabını kesinlikle okuyabilmenize rağmen, bunlara hız vermenin daha hızlı bir yolu, Kurumsal Uygulama Entegrasyonu hakkındaki Wikipedia makalesi gibi bir şey okumak olacaktır .
Konu alanını okuduğunuz ve anladığınız bir kişi, Apache Camel'in amacını anlama olasılığınız çok daha yüksek
HTH
Kurumsal Entegrasyon Kalıplarının farkındaysanız, Apache Camel tüm EIP'leri uygulayan bir entegrasyon çerçevesidir.
Ve Camel'i bir web kapsayıcısında bağımsız bir uygulama olarak dağıtabilirsiniz.
Temel olarak, birkaç uygulamayı farklı protokoller ve teknolojilerle entegre etmeniz gerekiyorsa, Camel'i kullanabilirsiniz.
Başka bir açıdan tanım:
Apache Camel bir entegrasyon çerçevesidir. Java platformunda entegrasyon sorunlarını uygulamanıza yardımcı olan bazı Java kitaplıklarından oluşur. Bunun anlamı ve bir taraftaki API'lardan ve diğer taraftaki Kurumsal Hizmet Veri Yolu'ndan (ESB) farkı "Makam ne zaman Apache Camel kullanılır? "
Tam olarak nedir?
Apache Camel , tüm Kurumsal Entegrasyon modellerini uygulayan hafif bir entegrasyon çerçevesidir.Gerekli modelleri kullanarak farklı uygulamaları kolayca entegre edebilirsiniz.
Java, Spring XML, Scala veya Groovy kullanabilirsiniz. Hayal edebileceğiniz hemen hemen her teknoloji mevcuttur, örneğin HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty vb.
Bu makaleye ve EIP kalıp makalesine bir göz atın
Java ile yazılmış bir uygulama ile nasıl etkileşimde bulunur?
Camel, aşağıda listelendiği gibi çeşitli etki alanına özgü dillerde Kurumsal Entegrasyon Kalıpları veya Rotaları oluşturmak için Java Etki Alanına Özel Dil veya DSL kullanır .
Java DSL - Akıcı oluşturucu stilini kullanan Java tabanlı bir DSL.
Kurumsal Entegrasyon Kalıbının hikayesi şu kavramlar etrafında çözülmektedir:
Mesaj, Bitiş Noktası, Yapımcı, Tüketici, Yönlendirme, Otobüs, Dönüştürme ve İşleme .
Anirban Konar'ın gerçek zamanlı kullanım durumlarından biri için bu makaleye göz atın .
Sunucu ile birlikte giden bir şey mi?
Birden çok kurumsal alt sistem arasında bir köprü görevi görür.
Bağımsız bir program mı?
Bir entegrasyon çerçevesi olan Apache Camel, farklı bağımsız uygulamaları entegre eder.
Devenin en büyük avantajı : Her entegrasyon için aynı kavramları kullanarak farklı uygulamaları farklı teknolojilerle (ve farklı protokollerle) entegre edebilirsiniz.
Bilgi işlemdeki "yeni" şeylerin çoğu gerçekten yeni değildir, onlar zaten iyi anlaşılmış bir şeyin etrafında gizemli bir pakettir. Ne zaman biri yeni dil terimleri icat karar ya da farklı bir amaç için mevcut koşullar kolonize çünkü genellikle, yaptıkları (iyi bir örnek anlamak zor olduğunu neyi 'istemci' ve 'server' ortalama X geliştiricilerinin geri adım anlamına geliyor.)
Deve, uygulamalar arası ara katman yazılımı için Java tabanlı bir paketleyicidir.
Ara katman yazılımı, ortak bir dili veya veri türlerini paylaşmayan varlıklar arasında yorumlama hizmetleri sağlayan genel bir terimdir.
Altta Deve böyle. EIP tipi ara katman yazılımı sağladığını belirterek açıklamayı yapabiliriz.
Uygulamaların iletişim kurması gerekenlerin ayrıntılarını bilemediğinden, ara katman yazılımının kendisini sağlamaz. Ancak, bu ara katman yazılımının değişmez kısımlarını oluşturmak için API sağlar (bir başlangıç noktası oluşturun, bir bitiş noktası oluşturun, başlangıç ve bitiş için koşullar oluşturun, vb.)
Umarım yardımcı olur.
İşte başka bir girişim.
Webmethods, ICAN Seebeyond, Tibco BW, IBM Broker gibi şeylerin nasıl olduğunu / olduğunu biliyorsunuz. Hepsi kuruluştaki entegrasyon çözümlerinde yardımcı oldular. Bu araçlar, Enterprise Application Integration (EAI) araçları olarak bilinir.
Bu teknolojilerin etrafında çoğunlukla sürükle bırak araçları vardı ve bazı bölümlerde Java'da adaptörler yazmak zorunda kalacaksınız. Bu bağdaştırıcı kodu test edilmemiştir veya test çevresinde zayıf takım / otomasyona sahiptir.
Programlamadaki tasarım desenlerinde olduğu gibi, yaygın entegrasyon çözümleri için Kurumsal Entegrasyon modellerine sahipsiniz. Gregor Hohpe ve Bobby Woolf tarafından aynı adlı bir kitapla ünlü oldular.
Bir veya daha fazla EIP kullanan entegrasyon çözümlerini uygulamak oldukça mümkün olsa da, Camel bunu XML, Java, Groovy veya Scala'dan birini kullanarak kod tabanınızda yapma girişimidir.
Deve, zengin DSL ve yönlendirme mekanizması aracılığıyla kitapta listelenen tüm Kurumsal Entegrasyon Kalıplarını destekler.
Bu yüzden Camel, entegrasyon kodunuzu test etmek için daha iyi destek sağlayan diğer EAI araçlarına rakip bir teknolojidir. Kod, Etki Alanına Özel Diller (DSL'ler) nedeniyle kısa ve öz olur. İş kullanıcıları tarafından bile okunabilir ve ücretsizdir ve üretken olmanızı sağlar.
Mesajlaşma ve mesajlaşma sorunlarını çözme konusunda bizi kolaylaştıran birçok çerçeve var. Böyle bir ürün Apache Camel.
Yaygın sorunların çoğunun tasarım deseni olarak adlandırılan kanıtlanmış çözümleri vardır. Mesajlaşma tasarım deseni, burada iyi açıklanmış olan Kurumsal Entegrasyon kalıplarıdır (EIP) . Apache devesi, çözümümüzü EIP'leri kullanarak uygulamamıza yardımcı olur.
Bir entegrasyon çerçevesinin gücü, EIP'ler veya diğer kalıplar, nakliye ve bileşen sayısı ve Apache devesinin listenin en üstünde bulunduğu geliştirme kolaylığı aracılığıyla bizi kolaylaştırma yeteneğidir.
Çerçevelerin her birinin kendine özgü avantajları vardır Apache devesinin özel özelliklerinden bazıları şunlardır.
Düz İngilizce'de deve, kazan plakası kodu olmadan çok fazla şey yapar.
Sadece size bir perspektif vermek için, aşağıda verilen Java DSL, Ürün Listesinden oluşan bir XML'i kabul edebilecek ve birden fazla ürüne ayıracak ve onunla BrandProcessor'un İşlem yöntemini çağırabilecek bir REST uç noktası oluşturacaktır. Ve sadece .parallelProcessing (yorumlanmış kısmı not edin) ekleyerek tüm Ürün Nesnelerini paralel olarak işleyecektir. (Ürün sınıfı, xml girişinin sınırlı olduğu XSD'den JAXB / XJC tarafından üretilen Java saplamasıdır.) Bu kadar kod (birkaç Deve bağımlılığı ile birlikte) 100'lü satır Java kodu almak için kullanılan işi alacaktır.
from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);
Rota kimliğini ve günlük bildirimini ekledikten sonra
from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);
Bu sadece bir örnek, Deve sadece REST bitiş noktasından çok daha fazlası. Takılabilir bileşen listesine bir göz atın http://camel.apache.org/components.html
Deve yönlendirme, dönüşüm, izleme konularında yardımcı olur.
Rotaları kullanır; bunlar şu şekilde tanımlanabilir:
Servis veri yolu belirli bir mesaj aldığında, bunu sıra / konu gibi hiçbir hizmet / aracı varış yeri üzerinden yönlendiremez. Bu yol, rota olarak bilinir.
Misal: Stok uygulamanız analist tarafından bir miktar girdi almıştır, uygulama / web bileşeni aracılığıyla işlenecek ve sonuç belirli stok güncellemesi için tüm ilgili / kayıtlı üyelere yayınlanacaktır.
Amazon gibi bir e-ticaret şirketi oluşturduğunuzu ve yalnızca satmak için strateji / ürün seçimine odaklanmak istediğinizi varsayın. Amazon teslimat filosunun aksine, malların satıcılardan depoya taşınması yerine, ambalaj gibi depoda değişiklik yapmak ve diğer şehir ve müşterilere göndermek. Tüm bunları yapan bir şirket kiralarsınız ve sadece tüm depo yerleriniz, araç türleri, teslimat yerleri ve ne zaman yapılacağına dair bir liste verirsiniz. Sonra bunu kendi başlarına hallederler, bu Apache Camel olurdu. Bir şeyleri bir uçtan diğerine taşımakla ilgileniyorlar, bir şeyleri onlara aktardıktan sonra, başka şeylere odaklanmakta özgürsünüz.
Deve, uygulamaları bir araya getirmek için tutarlı bir API ve programlama modeline sahip bir çerçevedir. API, Kurumsal Entegrasyon Kalıplarındaki teorilere dayanır - mesajlaşmayı kullanma eğiliminde olan bir dizi tasarım deseni. Bu modellerin çoğunun kutudan çıktığı uygulamaları sağlar ve ayrıca 200'den fazla farklı bileşenle birlikte gönderilir olarak her türlü diğer sistemle kolayca konuşmak için kullanabileceğiniz . Camel'i kullanmak için, önce iş mantığınızı POJO'lara yazın ve mesajlar etrafında basit arayüzler uygulayın. Ardından, uygulamanızı birbirine yapıştırmak için bir dizi kural olan "Rotalar" oluşturmak için Camel'in DSL'ini kullanın.
Yüzeyde, Camel'in işlevselliği geleneksel Enterprise Service Bus ürünleriyle rekabet ediyor. Genellikle bir Deve Rotası'nın sunucu tarafında yaşayan bir "arabuluculuk" (orkestrasyon) bileşeni olduğunu düşünüyoruz, ancak bir Java kütüphanesi olduğu için gömülmesi kolaydır ve aynı zamanda bir istemci tarafı uygulamasında da yaşayabilir ve entegre etmenize yardımcı olabilir noktadan noktaya hizmetlerle (koreografi olarak da bilinir). Camel rotasındaki mesajları işleyen POJO'larınızı bile alabilir ve kolayca kendi uzak tüketici süreçlerine dönüştürebilirsiniz, örneğin, sadece bir parçayı bağımsız olarak ölçeklendirmeniz gerekiyorsa. İhtiyaçlarınıza bağlı olarak herhangi bir sayıda farklı uzaktan taşıma / protokol aracılığıyla rotaları veya işlemcileri bağlamak için Camel'i kullanabilirsiniz. Son derece verimli ve hızlı bir ikili protokole ihtiyacınız var mı, ya da daha insan tarafından okunabilen ve hata ayıklaması kolay olan? Değiştirmek isteseydiniz ne olurdu? Deve ile bu genellikle rotanızdaki bir ya da iki satırı değiştirmek ve hiç bir iş mantığını değiştirmemek kadar kolaydır. Veya her ikisini de destekleyebilirsiniz - bir Deve Bağlamında aynı anda birçok Güzergahı çalıştırmakta özgürsünüz.
Tek bir işlemde veya JVM'de yaşayacak basit uygulamalar için Camel'i kullanmanıza gerek yoktur - aşırıya kaçar. Ancak kavramsal olarak kendinizi yazabileceğiniz koddan daha zor değildir. Gereksinimleriniz değişirse, iş mantığı ve tutkal kodunun ayrılması zaman içinde bakımını kolaylaştırır. Deve API'sini öğrendikten sonra, İsviçre Ordusu bıçağı gibi kullanmak ve başka türlü yazmak zorunda kalacak özel kod miktarını azaltmak için birçok farklı bağlamda hızlıca uygulamak kolaydır. Bir lezzeti öğrenebilirsiniz - Java DSL, örneğin zincirlemesi kolay akıcı bir API - ve diğer lezzetleri kolayca alabilirsiniz.
Mikro hizmet yapmaya çalışıyorsanız, genel deve mükemmel bir seçimdir. Bunu evrim mimarisi için paha biçilmez buldum, çünkü problem alanınız hakkında daha fazla bilgi sahibi oluncaya kadar protokoller, taşıma ve diğer sistem entegrasyon problemleri hakkında birçok zor, "kolay anlaşılır" karar verebilirsiniz. EIP'lerinize ve temel iş mantığınıza odaklanın ve daha fazla bilgi edindikçe "doğru" bileşenlerle yeni Rotalara geçin.
Evet, bu muhtemelen biraz geç. Ancak herkesin yorumlarına ekleyecek bir şey var ki, Camel aslında tam bir özellik kümesi yerine bir araç kutusu. Bunu geliştirirken aklınızda bulundurmalısınız ve çeşitli dönüşümler ve protokol dönüşümleri yapmanız gerekir.
Devenin kendisi diğer çerçevelere dayanır ve bu nedenle bazen hangilerinin ihtiyaçlarınıza en uygun olduğunu anlamak için bunları da anlamanız gerekir. Örneğin REST ile başa çıkmanın birden fazla yolu vardır. Bu ilk başta biraz kafa karıştırıcı olabilir, ancak kullanmaya ve test etmeye başladıktan sonra kendinizi rahat hissedeceksiniz ve farklı kavramlar hakkındaki bilginiz artacaktır.
Apache Camel, Kurumsal entegrasyon için bir Java çerçevesidir. Örneğin: - birçok satıcı API'siyle etkileşime giren bir web uygulaması oluşturuyorsanız, deveyi Harici entegrasyon aracı olarak kullanabiliriz. Kullanım durumuna göre daha fazlasını yapabiliriz. Manning yayınlarından Deve Eylemde Deve öğrenmek için harika bir kitap. Entegrasyonlar aşağıdaki gibi tanımlanabilir.
Java DSL
from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
.log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
.bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
.to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
+ "&bridgeEndpoint=true")
.bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");
Bunun amacı, harici bir API'yi çağıran ve isteği geri gönderen bir REST API uç noktası oluşturmaktır
İlkbahar DSL
<route id="GROUPS-SHOW">
<from uri="jetty://0.0.0.0:8080/showGroups" />
<log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
<to uri="direct:auditLog" />
<process ref="TestProcessor" />
</route>
Sorularınıza geliyor
Umarım yardımcı olur
Apache Camel, tüm Kurumsal Entegrasyon modellerini uygulayan hafif bir entegrasyon çerçevesidir. İstenen desenleri kullanarak farklı uygulamaları kolayca entegre edebilirsiniz. Java, Spring XML, Scala veya Groovy kullanabilirsiniz.
Apache Camel, Java Sanal Makinesi'nde (JVM) çalışır. ... Apache Camel'in ana işlevi yönlendirme motorudur. İlgili rotalara göre mesajlar tahsis eder. Bir rota akış ve entegrasyon mantığı içerir. EIP'ler ve belirli bir DSL kullanılarak uygulanır.
Bu bir boru hattı gibi
From---->To
Aralarında u kadar kanal ve boru ekleyebilirsiniz. Musluk, veri akışı için herhangi bir otomatik veya manuel tipte ve akışı kanalize etmek için bir yol olabilir.
Her türlü işleme türünü destekler ve uygular. Ve aynı işleme için birçok yaklaşıma sahip olduğu için birçok yaklaşım ve her bir bileşen, altında farklı yöntemler kullanarak istenen çıktıyı da sağlayabilir.
Örneğin, dosya aktarımı deve içinde dosya taşınmış veya kopyalanmış tiplerle ve ayrıca klasör, sunucu veya kuyruktan yapılabilir.
-from-->To
- from-->process-->to
- from-->bean-->to
- from-->process-->bean-->to
-from-->marshal-->process-->unmarshal-->to
/ Den ---- klasör, doğrudan, seda, vm herhangi bir şey olabilir
Başka bir bakış açısı (daha temel matematik konularına dayanarak)
En genel bilgi işlem platformu bir [ https://en.wikipedia.org/wiki/Turing_machine]
Turing makinesinde bir sorun var. Tüm giriş / çıkış verileri turing makinesinin içinde kalır. Gerçek dünyada Turing makinemizin dışında ve genel olarak kontrolümüz dışındaki sistemler tarafından yönetilen giriş kaynakları ve çıkış lavaboları vardır. Yani, bu harici sistem, istenen herhangi bir veri zamanlayıcı ile herhangi bir formatta istediği zaman veri gönderir / alır.
Soru: Bağımsız turing makinelerinin birbirleriyle en genel şekilde konuşmasını nasıl sağlarız, böylece her turing makinesi akranlarını bir giriş verisi kaynağı veya çıkış verilerinin kaynağı olarak görür?
Yanıt: Deve, katır, BizTalk veya farklı "fiziksel" (veya sanal yazılım) turlama makinelerini tamamlamak arasındaki veri işlemeyi soyutlayan herhangi bir ESB gibi bir şey kullanmak.