Apache Camel - przegląd
Camel to czarna skrzynka, która odbiera wiadomości z jednego punktu końcowego i wysyła je do innego. W czarnej skrzynce wiadomości mogą być przetwarzane lub po prostu przekierowywane.
Po co więc mieć na to ramy? W praktycznych sytuacjach, jak pokazano we wstępnym studium przypadku, może istnieć wielu nadawców i wielu odbiorników, z których każdy korzysta z własnego protokołu, takiego jak ftp, http i jms. System może wymagać wielu skomplikowanych reguł, np. Wiadomość od nadawcy A powinna być dostarczona tylko do B&C. W sytuacjach może zajść potrzeba przetłumaczenia wiadomości na inny format, jakiego oczekuje odbiorca. To tłumaczenie może podlegać pewnym warunkom w zależności od treści wiadomości. Zasadniczo może być konieczne tłumaczenie między protokołami, sklejanie komponentów, definiowanie reguł routingu i zapewnianie filtrowania na podstawie treści wiadomości. Ilustruje to poniższy rysunek -
Aby spełnić powyższe wymagania i zaprojektować odpowiednią architekturę oprogramowania dla wielu takich sytuacji, w 2003 roku Gregor Hohpe i Bobby Woolf udokumentowali Enterprise Integration Patterns ( EIP ). Apache Camel zapewnia implementację tych wzorców, a celem tego samouczka jest nauczenie jak używać Camela w sytuacjach takich jak ta opisana we wstępie.
Apache Camel jest platformą open source. Jest to oprogramowanie pośredniczące zorientowane na komunikaty, które udostępnia mechanizm routingu i mediacji oparty na regułach. Możesz zdefiniować reguły, na przykład jeśli jest to zamówienie „na mleko”, przekierowanie do sprzedawcy mleka, a jeśli jest to zamówienie „oleju”, przekierowanie do sprzedawcy oleju i tak dalej. Korzystając z Camel, będziesz w stanie zaimplementować te zasady i wykonać routing w znanym kodzie Java. Oznacza to, że do definiowania tych reguł w środowisku bezpiecznym dla typów można użyć znanego środowiska Java IDE. Nie musimy używać plików konfiguracyjnych XML, które zazwyczaj są nieporęczne. Camel obsługuje konfigurację XML za pośrednictwem platformy Spring, jeśli wolisz używać XML do konfigurowania reguł. Możesz nawet użyć plików konfiguracyjnych Blueprint XML, a nawet Scala DSL, jeśli jesteś miłośnikiem Scala. Oznacza to również, że możesz użyć swojego ulubionego środowiska Java, Scala IDE lub nawet prostego edytora XML do konfiguracji reguł.
Dane wejściowe do tego silnika mogą być plikami tekstowymi rozdzielanymi przecinkami, POJO (zwykły stary obiekt Java), XML to jeden z kilku innych formatów obsługiwanych przez Camel. Podobnie, dane wyjściowe silnika można przekierować do pliku, do kolejki komunikatów lub nawet ekranu monitora, aby wyświetlić zamówienia wysłane do odpowiednich dostawców. Są to nazywane punktami końcowymi, a Camel obsługuje wzorzec Message Endpoint EIP. Punkty końcowe Camel zostały omówione w dalszej części rozdziału Punkty końcowe.
Camel jest zwykle używany z Apache ServiceMix , Apache ActiveMQ i Apache CXF do implementacji architektur zorientowanych na usługi.