Czym dokładnie jest Apache Camel?

1360

Nie rozumiem, co dokładnie robi Camel .

Jeśli mógłbyś podać w 101 słowach wprowadzenie do Camela:

  • Co to dokładnie jest
  • Jak współdziała z aplikacją napisaną w Javie?
  • Czy to coś, co pasuje do serwera?
  • Czy to niezależny program?

Proszę wyjaśnić, czym jest Camel.

Myy
źródło

Odpowiedzi:

719

Jeśli masz od 5 do 10 minut, ogólnie polecam osobom przeczytanie tej integracji z Apache Camel autorstwa Jonathana Ansteya. Jest to dobrze napisany utwór, który zawiera krótkie wprowadzenie i przegląd niektórych koncepcji Camela oraz implementuje przypadek użycia z przykładowymi kodami. Jonathan pisze w nim:

Apache Camel to platforma Java typu open source, która koncentruje się na ułatwieniu integracji i dostępności dla programistów. Robi to, zapewniając:

  • konkretne wdrożenia wszystkich powszechnie stosowanych Wzorów Integracji Przedsiębiorstw (EIP)
  • łączność z wieloma różnymi transportami i interfejsami API
  • łatwe w użyciu języki specyficzne dla domeny (DSL) do łączenia EIP i transportów razem

Dostępny jest również bezpłatny rozdział Camel in Action, który wprowadza Camela w pierwszym rozdziale. Jonathan jest ze mną współautorem tej książki.

Claus Ibsen
źródło
55
Książka „Wielbłąd w akcji” jest bardzo dobrą książką do nauki podstaw, a także korzystania z bardziej skomplikowanych funkcji gry Camel. Gorąco polecam! (Nie jestem w żaden sposób związany z książką lub wydawcą)
Matt Aldridge
2
@ Clause, jeśli chcesz wybierać między mułem ESB a Camelem. jaka powinna być moja szkoda w wyborze jednego z drugich
kuhajeyan
8
Zobacz niektóre linki w porównaniu do konkurentów Camels na: camel.apache.org/articles.html .
Claus Ibsen
1
Tak, absolutnie można go używać do łączenia mikrousług, w końcu to tylko mały zestaw narzędzi / framework Java. Książka w drugim wydaniu Camel in Action zawiera pełny rozdział na temat mikrousług Camel.
Claus Ibsen
1
Jakie są „Wzory integracji korporacyjnej (EIP)”, o które pytasz? Wszystko, co musisz zrobić, aby się dowiedzieć, to „Kup książkę Wzorce integracji przedsiębiorstw ...”
Jose Quinteiro,
1130

Moje podejście do opisania tego w bardziej przystępny sposób ...

Aby zrozumieć, czym jest Apache Camel, musisz zrozumieć, jakie są wzorce integracji korporacyjnej.

Zacznijmy od tego, co prawdopodobnie już wiemy: wzór Singleton, wzór Factory itp .; Są jedynie sposobami na zorganizowanie twojego rozwiązania problemu, ale same nie są rozwiązaniami. Wzory te zostały przeanalizowane i wyodrębnione dla nas wszystkich przez Gang of Four, kiedy opublikowali swoją książkę: Design Patterns . Zaoszczędzili niektórym z nas ogromnego wysiłku, zastanawiając się, jak najlepiej ustrukturyzować nasz kod.

Podobnie jak Gang of Four, Gregor Hohpe i Bobby Woolf są autorami książki Enterprise Integration Patterns (EIP), w której proponują i dokumentują zestaw nowych wzorów i planów, w jaki sposób najlepiej zaprojektować systemy oparte na dużych komponentach, w których komponenty mogą być działający w tym samym procesie lub na innym komputerze.

Zasadniczo proponują, abyśmy ukształtowali nasz system tak, aby był zorientowany na komunikaty - w których komponenty komunikują się ze sobą, używając komunikatów jako sygnałów wejściowych i wyjściowych i absolutnie nic więcej. Pokazują nam pełny zestaw wzorów, które możemy wybierać i wdrażać w naszych różnych komponentach, które razem tworzą cały system.

Czym więc jest Apache Camel?

Apache Camel oferuje interfejsy dla EIP, obiektów podstawowych, często potrzebnych implementacji, narzędzi do debugowania, systemu konfiguracji i wielu innych pomocników, co pozwoli ci zaoszczędzić mnóstwo czasu, jeśli chcesz wdrożyć swoje rozwiązanie zgodne z EIP.

Weź MVC. MVC jest dość prosty w teorii i moglibyśmy go wdrożyć bez żadnej pomocy frameworka. Ale dobre frameworki MVC zapewniają nam strukturę gotową do użycia i poszły o krok dalej i przemyślały wszystkie inne „boczne” rzeczy, których potrzebujesz, gdy tworzysz duży projekt MVC i dlatego używamy ich przez większość czasu.

Właśnie tym jest Apache Camel dla EIP. Jest to kompletna platforma gotowa do produkcji dla osób, które chcą wdrożyć swoje rozwiązanie zgodnie z EIP.

Amr Mostafa
źródło
183
To prawdopodobnie najlepsza odpowiedź na pytanie. Wszystkie pozostałe odpowiedzi są tak samo mylące, jak wszystkie inne artykuły w Internecie
Nerrve
19
Kluczem jest EIP. Jeśli nie rozumiesz EIP, możesz używać Wielbłąda jak niewidomych i słonia (wielbłąda). EIP - eaipatterns.com
hutingung
22
+50 za tę odpowiedź - zaczynając od wstępu do EIP i analogicznie do GOF, MVC i frameworków. Z pytania wynika, że ​​OP nie ma pojęcia o EIP. Byłem na tej samej łodzi, zanim przeczytałem tę odpowiedź
Learner
6
Ten opis powinien zostać dodany do strony głównej Apache Camel, ponieważ odpowiada na pytanie, a następnie kilka. Dokładnie to, jak używał analogii z MVC odręcznie lub za pomocą „narzędzia” pomocnego w udzieleniu tej odpowiedzi dało mi zrozumienie bez konieczności przeszukiwania niekończących się innych (użytecznych) linków, gdy wszystko, czego potrzebowałem, to zwięzłe odpowiedź.
Azkuma,
2
Trochę problemów z EIP: „Na przestrzeni lat istniało wiele bibliotek i struktur ułatwiających integrację. Często jednak koncepcje wzorców integracji korporacyjnej przekształcają się w złożone hierarchie klas lub obiekty, które muszą być ze sobą połączone , a pierwotne zamiary i wzorce są często gubione. Od tego momentu programista musi skupić się na szczegółach niskiego poziomu i interfejsie API biblioteki klas złożonych, tracąc większy obraz i wzorce. ”
Quan Nguyen,
659

Utworzenie opisu projektu nie powinno być skomplikowane.

Mówię:

Apache Camel to klej do technologii przesyłania wiadomości z routingiem. Łączy punkty początkowe i końcowe przesyłania wiadomości, umożliwiając przekazywanie wiadomości z różnych źródeł do różnych miejsc docelowych. Na przykład: JMS -> JSON, HTTP -> JMS lub lejekowanie FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia mówi:

Apache Camel to oparty na regułach silnik routingu i mediacji, który zapewnia opartą na obiektach Java implementację wzorców integracji korporacyjnej za pomocą interfejsu API (lub deklaratywnego języka specyficznego dla domeny Java) w celu skonfigurowania reguł routingu i mediacji. Język specyficzny dla domeny oznacza, że ​​Apache Camel może obsługiwać bezpieczne w typie inteligentne uzupełnianie reguł routingu w twoim IDE przy użyciu zwykłego kodu Java bez ogromnej ilości plików konfiguracyjnych XML; chociaż konfiguracja XML w Springu jest również obsługiwana.

Widzieć? To nie było trudne, prawda?

David Newcomb
źródło
307
Strona główna Apache Camel odnosi się do tego wątku ... Nie udało im się podać krótkiego wyjaśnienia funkcjonalnego własnego produktu.
youri
15
Ten artykuł jest doskonałym przykładem tego, jak konstruktywna krytyka i uczciwy wysiłek mogą stworzyć wysublimowaną dokumentację. Jest to polecane na oficjalnej stronie Camela. Ale zachowajmy konstruktywność i unikaj tagowania nazw. Autorzy dokumentacji i inni współpracownicy są czasami trudni do zdobycia i zasługują na nasz szacunek. BTW - mamy wiele standardów kodowania Java ... i trzymamy się go z dumą i honorem ... co powiesz na standard dokumentacji dla mediów takich jak Wiki i oficjalne przewodniki?
YoYo
1
Czy to jest jak odwrotne proxy drobnoziarniste?
Asad Hasan
1
Znalazłem tę odpowiedź poprzez link do strony głównej Camela. Ogłusza mnie to, że nie cytują tego bezpośrednio na swojej stronie ani nawet nie podają linku do konkretnej odpowiedzi.
Jelling
9
To właśnie nazywam ostry i konkretny odbiór. O dziwo, przyjęta odpowiedź wygląda jak reklama. +1
EMM
120

W skrócie:

Kiedy istnieje potrzeba połączenia / zintegrowania systemów, prawdopodobnie będziesz musiał połączyć się z jakimś źródłem danych, a następnie przetworzyć te dane, aby spełnić wymagania biznesowe.

Aby to zrobić:

1) Możesz opracować niestandardowy program, który by to zrobił (może być czasochłonny i trudny do zrozumienia dla innych programistów)

2) Alternatywnie możesz użyć Apache Camel, aby zrobić to w standardowy sposób (ma większość złączy już dla Ciebie opracowanych, wystarczy go skonfigurować i podłączyć swoją logikę - zwaną Proces):

Wielbłąd pomoże ci:

  1. Zużyj dane z dowolnego źródła / formatu
  2. Przetwarzaj te dane
  3. Dane wyjściowe do dowolnego źródła / formatu

Używając Apache Camel ułatwisz zrozumienie / utrzymanie / rozszerzenie systemu na innego programistę.

Apache Camel został opracowany z wykorzystaniem Enterprise Integration Patterns. Wzory pomagają w dobrej integracji systemów :-)

Marcin Wasiluk
źródło
Czy to oznacza, że ​​inni programiści mogą zmieniać logikę także w innym języku programowania?
JavaTechnical
1
@JavaTechnical Biorąc pod uwagę wzorzec przesyłania komunikatów (EIP), możesz już kodować różne komponenty w różnych językach, ponieważ te komunikaty są w formatach niezależnych od języka, takich jak JSON. Wielbłąd zapewnia łatwe ramy do wdrożenia EIP. Jest to oparte na moim zrozumieniu. Popraw mnie, jeśli się mylę.
Dheeraj Bhaskar
98

Wielbłąd wysyła wiadomości od A do B:

wprowadź opis zdjęcia tutaj

Po co całe ramy dla tego? Co jeśli masz:

  • wielu nadawców i wielu odbiorców
  • kilkanaście protokołów ( ftp, http, jmsetc.)
  • wiele skomplikowanych zasad
    • Wyślij wiadomość A tylko do Odbiorników A i B.
    • Wyślij wiadomość B do Odbiornika C jako XML , ale częściowo przetłumacz go, wzbogac go (dodaj metadane) i JEŻELI warunek X , a następnie wyślij go również do Odbiornika D, ale jako CSV .

Więc teraz potrzebujesz:

  • tłumaczyć między protokołami
  • skleić elementy razem
  • definiuj trasy - co idzie gdzie
  • filtruj niektóre rzeczy w niektórych przypadkach

Wielbłąd daje Ci powyższe (i więcej) po wyjęciu z pudełka:

wprowadź opis zdjęcia tutaj

z fajnym językiem DSL, dzięki któremu możesz zdefiniować, co i jak:

  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");
}

Zobacz także to i to i Camel in Action (jak powiedzieli inni, świetna książka!)

Andrejs
źródło
75

Schemat jest lepszy niż tysiące opisów. Ten schemat ilustruje architekturę Wielbłąda.

wprowadź opis zdjęcia tutaj

CrimsonFantasy
źródło
55

OPARTE NA ANALOGII

Wyznaczanie tras na wielbłądach można łatwo zrozumieć, stawiając się w sytuacji właściciela linii lotniczej (np .: American Airlines, Jet Airways).

Celem „twojej linii lotniczej” jest „przewóz” „pasażerów” z jednego „miasta” do drugiego na świecie. Do przewożenia pasażerów używasz samolotów różnych „firm lotniczych”, takich jak Boeing, Airbus, HAL.

Pasażerowie Twojej linii lotniczej wsiadają do pasażerów korzystających z „lotnisk” z miasta i wysiadają ich z lotniska do miasta. Pasażer może „podróżować” do wielu miast, ale wszędzie, gdzie musi przejść przez lotnisko, aby podróżować między samolotem linii lotniczej a miastem.

Pamiętaj, że pasażer „odlatujący” z miasta zasadniczo „przyjeżdża” do samolotu linii lotniczych. A pasażer „przybywający” do miasta zasadniczo odchodzi z samolotu. Ponieważ jesteśmy w gestii właściciela linii lotniczych, pojęcia „pasażer przylatujący” i „pasażer odlatujący” są odwrócone od naszych konwencjonalnych pojęć opartych na perspektywie miast.

Z tej samej infrastruktury „lotniska” każdego miasta korzystają pasażerowie „odlatujący” i pasażerowie „przylatujący”. Lotnisko zapewnia „odlatującą infrastrukturę” dla odlatujących pasażerów, która różni się od „infrastruktury przylotowej” przewidzianej dla pasażerów przylatujących.

Pasażerowie mogą kontynuować swój dzień ze względu na różne „udogodnienia” zapewnione w samolocie przez linie lotnicze podczas podróży.

Ponadto twoja linia lotnicza zapewnia również zaplecze wypoczynkowe dla specjalnych zabiegów, takich jak „rozumienie lokalnego języka” lub przygotowywanie cię do „podróży”.

Pozwala zamienić kilka słów / fraz używanych powyżej na:

Twoja linia lotnicza: Apache Camel

firmy lotnicze: Mechanizmy transportowe

samolot linii lotniczych: podstawowy mechanizm transportowy Apache Camel

carry: route

pasażerowie: wiadomość;

miasto: system;

lotnisko: Camel Component;

rozumienie języków lokalnych: konwersje typów;

odejście: produkcja, produkcja

przybywające: konsumujące, konsumowane

podróż: rozłożona

udogodnienia: pod warunkiem

Po zamianie słów oto, co otrzymujesz:

Celem „Apache Camel” jest kierowanie „wiadomości” z jednego „systemu” do drugiego na świecie. Wielbłąd Apache używa różnych mechanizmów transportu do kierowania wiadomości.

Apache Camel odbiera wiadomości za pomocą „komponentu opartego na wielbłądach” w systemie „z” i upuszcza je za pomocą „komponentu opartego na wielbłądach” w systemie „do”. Wiadomość może kierować do wielu systemów, ale wszędzie muszą przejść przez „Komponenty wielbłąda”, aby podróżować między „mechanizmem bazowym Apache Camel” a systemem.

Zauważ, że komunikat „wyprodukowany” z systemu jest zasadniczo „zużyty” w podstawowy mechanizm transportowy Apache Camel ”. Komunikat zużyty przez system jest zasadniczo generowany przez „mechanizm transportowy Apache Camel”.

Ponieważ próbujemy zrozumieć Camela, musimy myśleć z perspektywy Camela tutaj. Znaczenie terminów „komunikat konsumencki” i „komunikat producenta” jest zatem odwrócone od naszych konwencjonalnych pojęć opartych na perspektywie systemu.

Ta sama infrastruktura kodowania komponentu „Camel Component” jest używana przez „komunikat producenta” i „komunikat konsumenta”. „Komponent oparty na wielbłądach” zapewnia „punkt końcowy producenta” dla „komunikatu producenta” i „punkt końcowy konsumenta” dla „komunikatu konsumenta”.

Wiadomości mogą być przetwarzane przez Camel podczas ich trasowania.

Oprócz tego routingu Camel zapewnia specjalne funkcje, takie jak „konwersja typów” i wiele innych ...

DolphinJava
źródło
Świetne wyjaśnienie miłe do odczytania i łatwe do zapamiętania. Zastanawiam się, jaką rolę ma pas startowy lub pilot, jeśli nawet istnieją na wielbłądach.
Stimpson Cat
Ładne wyjaśnienie, szczególnie przykład z lotniska. jeśli dodałeś jeszcze kilka rozszerzonych terminów i odrobinę kodu przykład byłby naprawdę świetny !! Dzięki
Ankur Nirmalkar
50

Jedną z rzeczy, które musisz zrozumieć, zanim spróbujesz zrozumieć Apache Camel, są Wzorce Integracji z Przedsiębiorstwem. Nie wszyscy w terenie są ich świadomi. Podczas gdy na pewno możesz przeczytać książkę Enterprise Integration Patterns, szybszym sposobem na ich przyspieszenie byłoby przeczytanie czegoś takiego jak artykuł Wikipedii na temat integracji aplikacji biznesowych .

Po przeczytaniu i zrozumieniu tematu znacznie bardziej prawdopodobne jest zrozumienie celu Apache Camel

HTH

Crollster
źródło
35

Jeśli znasz Wzorce integracji z przedsiębiorstwami, Apache Camel to jedna z platform integracyjnych, która implementuje wszystkie EIP.

I możesz wdrożyć Camel jako samodzielną aplikację w kontenerze internetowym.

Zasadniczo, jeśli musisz zintegrować kilka aplikacji z różnymi protokołami i technologiami, możesz użyć Camel.

Sunil
źródło
22

Definicja z innej perspektywy:

Apache Camel to platforma integracyjna. Składa się z niektórych bibliotek Java, co pomaga w implementacji problemów z integracją na platformie Java. Co to oznacza i czym różni się od interfejsów API z jednej strony i magistrali Enterprise Service Bus (ESB) z drugiej strony, opisano w moim artykule „ Kiedy używać Apache Camel ”.

Kai Wähner
źródło
18

Co to dokładnie jest

Apache Camel to lekka platforma integracyjna, która implementuje wszystkie wzorce integracji korporacyjnej. Możesz łatwo integrować różne aplikacje przy użyciu wymaganych wzorców.

Możesz używać Java, Spring XML, Scala lub Groovy. Dostępna jest prawie każda technologia, jaką możesz sobie wyobrazić, na przykład HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty itp.

Przeczytaj ten artykuł i artykuł ze wzorem EIP

Jak współdziała z aplikacją napisaną w Javie?

Wielbłąd używa języka specyficznego dla domeny Java lub DSL do tworzenia wzorców lub tras integracji w różnych językach specyficznych dla domeny (DSL), jak podano poniżej.

Java DSL - DSL oparty na Javie, wykorzystujący styl płynnego konstruktora.

Historia Enterprise Integration Pattern dotyczy następujących pojęć:

Wiadomość, punkt końcowy, producent, konsument, routing, magistrala, transformacja i przetwarzanie .

Spójrz na ten artykuł Anirban Konar na jeden z przypadków użycia w czasie rzeczywistym.

Czy to coś, co pasuje do serwera?

Działa jako pomost między wieloma podsystemami przedsiębiorstwa.

Czy to niezależny program?

Apache Camel, platforma integracyjna, integruje różne niezależne aplikacje.

Główna zaleta Camel : Możesz integrować różne aplikacje z różnymi technologiami (i różnymi protokołami), stosując te same koncepcje dla każdej integracji.

Ravindra babu
źródło
Zastanawiam się, dlaczego używasz słowa „lekki”. Moje spostrzeżenie jest takie, że Apache Camel jest naprawdę ciężki.
Krzysztof Tomaszewski
13

Większość „nowych” rzeczy w informatyce wcale nie jest tak naprawdę nowa, są po prostu tajemniczym opakowaniem wokół czegoś, co już zostało dobrze zrozumiane. Kiedy są trudne do zrozumienia, to zwykle dlatego, że ktoś zdecydował się wynaleźć nowych warunków językowych lub skolonizować istniejące warunki dla innych celów (przykładem dobra , że jest odwrócenie deweloperów X co «klient» i «serwer» mean).

Camel to oparte na Javie opakowanie / API dla oprogramowania pośredniego między aplikacjami.

Oprogramowanie pośrednie to ogólny termin określający oprogramowanie świadczące usługi tłumaczeń ustnych między podmiotami nieposiadającymi wspólnego języka lub typów danych.

Taki właśnie jest Camel na dole. Możemy rozwinąć opis, zauważając, że zawiera on oprogramowanie pośrednie typu EIP.

Nie zapewnia samego oprogramowania pośredniego, ponieważ nie może poznać szczegółów komunikacji między aplikacjami. Ale zapewnia interfejs API do tworzenia niezmiennych części tego oprogramowania pośredniego (utwórz punkt początkowy, utwórz punkt końcowy, stwórz warunki do rozpoczęcia i zakończenia itp.)

Mam nadzieję, że to pomaga.

MMacD
źródło
4
„Większość” nowych „rzeczy w informatyce wcale nie jest tak naprawdę nowa, są po prostu tajemniczym opakowaniem wokół czegoś, co już zostało dobrze zrozumiane”. <<<< Najlepsza rzecz, jaką czytałem przez cały tydzień!
Dave
8

Oto kolejna próba.

Wiesz, jak istnieją / były rzeczy takie jak Webmethods, ICAN Seebeyond, Tibco BW, IBM Broker. Wszyscy pomogli w rozwiązaniach integracyjnych w przedsiębiorstwie. Narzędzia te są powszechnie znane pod nazwą narzędzia Enterprise Application Integration (EAI).

Wokół tych technologii zbudowano głównie narzędzia typu „przeciągnij i upuść”, aw częściach trzeba pisać adaptery w Javie. Te kody adaptera były albo nieprzetestowane, albo miały słabe oprzyrządowanie / automatyzację podczas testowania.

Podobnie jak w przypadku wzorców projektowych w programowaniu, masz wzorce integracji korporacyjnej dla popularnych rozwiązań integracyjnych. Rozsławili je książka o tym samym tytule autorstwa Gregora Hohpe i Bobby'ego Woolfa.

Chociaż jest całkiem możliwe wdrożenie rozwiązań integracyjnych korzystających z jednego lub wielu EIP, Camel jest próbą zrobienia tego w twojej bazie kodu przy użyciu jednego z XML, Java, Groovy lub Scala.

Camel obsługuje wszystkie wzorce integracji przedsiębiorstwa wymienione w książce za pośrednictwem bogatego DSL i mechanizmu routingu.

Camel jest więc konkurencyjnym technoloyem do innych narzędzi EAI z lepszą obsługą testowania kodu integracji. Kod jest zwięzły ze względu na języki specyficzne dla domeny (DSL). Jest czytelny nawet dla użytkowników biznesowych i jest bezpłatny i zapewnia produktywność.

skipy
źródło
7

Istnieje wiele ram, które ułatwiają nam przesyłanie wiadomości i rozwiązywanie problemów z przesyłaniem wiadomości. Jednym z takich produktów jest Apache Camel.

Większość typowych problemów ma sprawdzone rozwiązania zwane wzorcami projektowymi. Wzorzec projektowania komunikatów to wzorce integracji korporacyjnej (EIP), które są dobrze wyjaśnione tutaj . Wielbłąd Apache pomaga nam wdrożyć nasze rozwiązanie za pomocą EIP.

Siłą szkieletu integracji jest jego zdolność do ułatwiania nam poprzez EIP lub inne wzorce, liczbę transportów i komponentów oraz łatwość rozwoju, na której wielbłąd Apache stoi na szczycie listy

Każda z ram ma swoje zalety. Niektóre ze specjalnych cech wielbłąda Apache są następujące.

  1. Zapewnia kodowanie w wielu DSL, a mianowicie popularnych Java DSL i DSL opartych na Spring XML.
  2. Łatwy w użyciu i prosty w użyciu.
  3. Fuse IDE to produkt, który pomaga kodować za pomocą interfejsu użytkownika
Naveen Raj
źródło
7

Mówiąc wprost, wielbłąd wykonuje (wiele) rzeczy bez większego kodu płyty kotłowej.

Aby dać Ci perspektywę, Java DSL podana poniżej stworzy punkt końcowy REST, który będzie w stanie zaakceptować XML składający się z Listy Produktów i podzieli go na wiele produktów i wywoła z nim metodę Process BrandProcessor. I po prostu dodając .parallelProcessing (zwróć uwagę na skomentowaną część), będzie równolegle przetwarzał wszystkie obiekty produktu. (Klasa produktu to wygenerowany przez JAXB / XJC kod pośredniczący Javy z XSD, do którego ogranicza się wejściowy plik XML). Taki kod (wraz z kilkoma zależnościami Camel) wykona zadanie, które zajęło 100 s wierszy kodu Java.

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

Po dodaniu identyfikatora trasy i instrukcji logowania

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);

To tylko próbka, Camel to znacznie więcej niż tylko punkt końcowy REST. Wystarczy spojrzeć na listę komponentów wtykowych http://camel.apache.org/components.html

KingJulien
źródło
6

Wielbłąd pomaga w routingu, transformacji, monitorowaniu.

Korzysta z tras; które można opisać jako:

Gdy magistrala usług odbiera określoną wiadomość, kieruje ją przez liczbę miejsc docelowych usług / brokerów, takich jak kolejka / tematy. Ta ścieżka jest znana jako trasa.

Przykład: twoja aplikacja giełdowa otrzymała dane od analityka, zostanie przetworzona przez aplikację / komponent internetowy, a następnie wyniki zostaną opublikowane wszystkim zainteresowanym / zarejestrowanym członkom w celu aktualizacji konkretnej akcji.

sa_nyc
źródło
5

Załóżmy, że tworzysz firmę zajmującą się handlem elektronicznym, taką jak Amazon, i chcesz skupić się wyłącznie na strategii / wyborze produktów do sprzedaży. w przeciwieństwie do floty dostawczej Amazon, zamiast zajmować się przenoszeniem towarów od sprzedawców do magazynu, wprowadzając w nim zmiany, takie jak pakowanie i wysyłając je do innych miast i klientów. Zatrudniasz firmę, która to wszystko robi, i po prostu podajesz im informacje o wszystkich lokalizacjach magazynowych, typach pojazdów, lokalizacjach dostaw oraz listę, kiedy to zrobić. Potem sami sobie z tym poradzą, to będzie Apache Camel. Zajmują się przenoszeniem rzeczy z jednego końca na drugi, po przekazaniu im rzeczy, dzięki czemu możesz swobodnie skupić się na innych rzeczach.

Chetan Gowda
źródło
5

101 Word Intro

Camel to framework ze spójnym API i modelem programowania do integracji aplikacji. Interfejs API opiera się na teoriach we wzorcach integracji korporacyjnej - tj. Wiązce wzorców projektowych, które zwykle używają przesyłania komunikatów. Zapewnia gotowe do użycia implementacje większości tych wzorców, a dodatkowo zawiera ponad 200 różnych komponentów, których można użyć do łatwej komunikacji z wszelkiego rodzaju innymi systemami. Aby korzystać z Camel, najpierw napisz logikę biznesową w POJO i zaimplementuj proste interfejsy skupione wokół komunikatów. Następnie użyj DSL Camela, aby utworzyć „Trasy”, które są zestawami reguł do łączenia aplikacji.

Rozszerzone wprowadzenie

Z pozoru funkcjonalność Camela konkuruje z tradycyjnymi produktami Enterprise Service Bus. Zazwyczaj myślimy, że Camel Route jest komponentem „mediacji” (aka orkiestracji), który żyje po stronie serwera, ale ponieważ jest to biblioteka Java, jest łatwa do osadzenia i może równie dobrze działać na aplikacji klienckiej i pomóc w integracji z usługami punkt-punkt (inaczej choreografia). Możesz nawet zabrać swoje POJO, które przetwarzają wiadomości na trasie Wielbłąda, i łatwo zawirować je w swoich zdalnych procesach konsumenckich, np. Jeśli potrzebujesz skalować tylko jeden element niezależnie. Możesz używać Camel do łączenia tras lub procesorów za pomocą dowolnej liczby różnych zdalnych transportów / protokołów w zależności od potrzeb. Czy potrzebujesz niezwykle wydajnego i szybkiego protokołu binarnego, lub taki, który jest bardziej czytelny dla człowieka i łatwy do debugowania? Co jeśli chcesz zmienić? Z Camel jest to zwykle tak proste, jak zmiana linii lub dwóch na trasie i wcale nie zmienia logiki biznesowej. Lub możesz wesprzeć oba - możesz uruchomić wiele tras jednocześnie w kontekście wielbłąda.

Naprawdę nie musisz używać Camel do prostych aplikacji, które będą działać w jednym procesie lub JVM - byłoby to przesadą. Ale nie jest to koncepcyjnie trudniejsze niż kod, który sam możesz napisać. A jeśli zmienią się twoje wymagania, oddzielenie logiki biznesowej i kodu kleju ułatwia utrzymanie z czasem. Kiedy nauczysz się Camel API, możesz łatwo używać go jak szwajcarskiego noża wojskowego i szybko go stosować w wielu różnych kontekstach, aby zmniejszyć ilość niestandardowego kodu, który w innym przypadku musiałbyś napisać. Możesz nauczyć się jednego smaku - na przykład Java DSL, na przykład płynnego interfejsu API, który można łatwo łączyć - i łatwo wybierać inne smaki.

Ogólnie rzecz biorąc, Camel doskonale pasuje, jeśli próbujesz wykonać mikrousługi. Uważam, że jest to bezcenne dla architektury ewolucyjnej, ponieważ można odłożyć wiele trudnych, „łatwych do pomyłki” decyzji dotyczących protokołów, transportu i innych problemów związanych z integracją systemu, dopóki nie dowiesz się więcej o swojej dziedzinie problemów. Skoncentruj się na EIP i podstawowej logice biznesowej i przełącz się na nowe trasy z „odpowiednimi” komponentami, gdy dowiesz się więcej.

cwash
źródło
4

Tak, to chyba trochę za późno. Ale jedną rzeczą, którą należy dodać do komentarzy wszystkich innych, jest to, że Camel to tak naprawdę zestaw narzędzi, a nie pełny zestaw funkcji. Należy o tym pamiętać podczas opracowywania i konieczności wykonywania różnych transformacji i konwersji protokołu.

Sam Camel opiera się na innych ramach, dlatego czasami musisz je również zrozumieć, aby zrozumieć, który najlepiej pasuje do twoich potrzeb. Istnieje na przykład wiele sposobów obsługi REST. Na początku może to być nieco mylące, ale kiedy zaczniesz używać i testować, poczujesz się swobodnie, a Twoja wiedza na temat różnych koncepcji wzrośnie.

Souciance Eqdam Rashti
źródło
4

Apache Camel to platforma Java do integracji z przedsiębiorstwami. Np .: - jeśli budujesz aplikację internetową, która współdziała z interfejsami API wielu dostawców, możemy użyć wielbłąda jako narzędzia integracji zewnętrznej. Możemy z tym zrobić więcej w zależności od przypadku użycia. Publikacje „Wielbłąd w akcji” Manninga to świetna książka do nauki wielbłąda. Integracje można zdefiniować jak poniżej.

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");

Ma to na celu utworzenie punktu końcowego interfejsu API REST, który z kolei wywołuje zewnętrzny interfejs API i odsyła żądanie

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

Wychodzę na twoje pytania

  1. Co to dokładnie jest Odp .: - Jest to framework, który implementuje wzorce integracji Enterprise
  2. Jak współdziała z aplikacją napisaną w Javie? Odp .: - może współpracować z dowolnymi dostępnymi protokołami, takimi jak http, ftp, amqp itp
  3. Czy to coś, co pasuje do serwera? Odp .: - Może być wdrożony w kontenerze takim jak tomcat lub może być wdrożony niezależnie jako proces Java
  4. Czy to niezależny program? Odp .: - Może być.

Mam nadzieję, że to pomoże

Khader MA
źródło
3

Apache Camel to lekka platforma integracyjna, która implementuje wszystkie wzorce integracji korporacyjnej. Możesz łatwo zintegrować różne aplikacje przy użyciu wymaganych wzorców. Możesz używać Java, Spring XML, Scala lub Groovy.

Apache Camel działa na wirtualnej maszynie Java (JVM). ... Podstawową funkcjonalnością Apache Camel jest silnik routingu. Przydziela wiadomości na podstawie powiązanych tras. Trasa zawiera logikę przepływu i integracji. Jest realizowany przy użyciu EIP i określonej DSL.

wprowadź opis zdjęcia tutaj

Midhun Pottammal
źródło
1
Wzór wielbłąda 40, w EIP: wzór integracji przedsiębiorstwa.
Jakub
2

To jak połączenie rurociągu

From---->To

Pomiędzy możesz dodać tyle kanałów i potoków. Kran może być dowolnego typu automatyczny lub ręczny do przepływu danych i trasy do ukierunkowania przepływu.

Obsługuje i ma implementację dla wszystkich typów i rodzajów przetwarzania. I do tego samego przetwarzania wiele podejść, ponieważ ma wiele składników, a każdy składnik może również zapewnić pożądany wynik przy użyciu różnych metod.

Na przykład, transfer plików może odbywać się na wielbłądzie z przeniesionymi lub skopiowanymi plikami typów, a także z folderu, serwera lub kolejki.

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

Folder z / do ----, direct, seda, vm może być dowolny

javalearner_heaven
źródło
0

Kolejny punkt widzenia (oparty na bardziej podstawowych zagadnieniach matematycznych)

Najbardziej ogólną platformą komputerową jest [ https://en.wikipedia.org/wiki/Turing_machine]

Wystąpił problem z maszyną Turinga. Wszystkie dane wejściowe / wyjściowe pozostają w maszynie Turinga. W prawdziwym świecie źródła wejściowe i odbiorniki wyjściowe są zewnętrzne w stosunku do naszej maszyny Turinga i ogólnie są zarządzane przez systemy poza naszą kontrolą. Oznacza to, że zewnętrzny system będzie wysyłać / odbierać dane w dowolnym formacie w dowolnym dowolnym harmonogramie danych.

Pytanie: Jak udaje się sprawić, by niezależne maszyny Turinga rozmawiały ze sobą w najbardziej ogólny sposób, tak aby każda maszyna Turinga widziała swoich partnerów jako źródło danych wejściowych lub źródło danych wyjściowych?

Odpowiedź: Używanie czegoś takiego jak wielbłąd, muł, BizTalk lub jakikolwiek inny ESB, który odciąga przetwarzanie danych od ukończenia różnych maszyn do „fizycznego” (lub wirtualnego oprogramowania).

Earizon
źródło