Apache Camel ( Martin Polovinčák )
Transkript
Apache Camel ( Martin Polovinčák )
Apache Camel Úvod do EIP a použití frameworku Apache Camel Prezentace pro CZJUG 1 § Úvod do problému § EIP, nástroje, které se používají § Apache Camel § Architektura § Spring § Testování – Junit § Optimalizace § Postřehy Apache Camel / Úvod do EIP a použití frameworku Apache Camel Témata 2 § Aplikace na sobě nezávisí § Každá aplikace se zaměřuje na specifickou funkcionalitu § Delegace činností mezi aplikacemi § Komunikace je asynchronní, aplikace nečekají na odpověď § Než je k dispozici odpověď, pracuje aplikace na dalších požadavcích Příklad: “Messagingové řešení” Apache Camel / Úvod do EIP a použití frameworku Apache Camel Kdy mluvíme o integraci aplikací? 3 § Přenos souborů § Sdílená databáze § RMI – vzdálené volání procedur § Messaging Apache Camel / Úvod do EIP a použití frameworku Apache Camel Pomocí čeho integrovat? 4 § Channels – kanály zpráv (fronta, téma) § Messages – zprávy § Pipes and Filters – trubky a filtry § Routing – směrování § Transformation – transformace § Endpoints – napojení na externí zdroje, protokoly Apache Camel / Úvod do EIP a použití frameworku Apache Camel Messaging – některé pojmy z EIP 5 EIP § Sjednocení terminologie § Popis jednotlivých částí integračního řešení, které se často opakují § Pomoc při návrhu § Vzorů je hodně, nemá smysl je procházet… Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Enterprise Integration Patterns § Hlavní úkol: 6 Nástroje k implementaci EIP § Apache Camel – podpora Springu, příznivá křivka učení § Spring Integration – těží z rozšíření a funkčnosti Springu § MSMQ/.NET § TIBCO § MS BizTalk Apache Camel / Úvod do EIP a použití frameworku Apache Camel § JMS/Java 7 § Režie frameworku v použitém řešení je velmi malá § Nezávislost na protokolu/zdroji § Implementován velký počet integračních vzorů § Velmi dobře zdokumentovaný § Velmi jednoduše rozšiřitelný § Relativně jednoduchý – příznivá křivka učení Apache Camel / Úvod do EIP a použití frameworku Apache Camel Camel Framework 8 Camel Framework Architektura: § Integruje protokol nebo externí zdroj § Programátorsky: factory pro určitý typ endpointu § Endpoint – produkuje/konzumuje data § Router – obaluje pravidla pro směrování zpráv, endpointy Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Komponenta 9 Apache Camel / Úvod do EIP a použití frameworku Apache Camel Camel Framework 10 Camel deployment § Spring IoC kontejner § Samostatně § OSGi kontejner Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Možnosti nasazení: 11 § Transakce § XML konfigurace § Bean Integration § Dependency Injection – camel context/spring beany § JMS komponenta – postavena na JMS Template Apache Camel / Úvod do EIP a použití frameworku Apache Camel Camel a Spring 12 § Integrují do jádra routeru určitý protokol nebo zdroj § Z pohledu programátora – factory pro vytvoření endpointu § Camel obsahuje mnoho hotových komponent § JMS komponenta (messaging) § CXF komponenta (web services) § File komponenta (soubory, adresáře) § Bean komponenta (beany nebo POJO) § Mock komponenta (testování) § a další… Apache Camel / Úvod do EIP a použití frameworku Apache Camel Camel komponenty 13 § Vytvářeny komponentami § Konverze vstupu na vnitřní formát frameworku § Konverze vnitřního formátu frameworku na výstupní § Odkazuje se na ně pomocí URI, charakteristický prefix § jms – JMS koponenta (JMS messaging) § cxf – CXF komponenta (web services) § file – komponenta pro práci se soubory § mock – testování Apache Camel / Úvod do EIP a použití frameworku Apache Camel Camel endpoint 14 Camel endpoint § Varianta definice endpointu v xml § Odkaz na endpoint pomocí ref=id <camel:endpoint id="input” uri="jms:input@z3smq_3001" />! Apache Camel / Úvod do EIP a použití frameworku Apache Camel ! 15 Camel router § Definice chování routeru § Definice směrování zpráv § Definice endpointů § Kontext může být definován pomocí § XML § Java kódu § XML a Java kódu Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Router je reprezentován CamelContext (kontext) objektem § Kontext obsahuje: 16 Camel router – XML konifgurace <camel:camelContext id="camel”>! !<camel:route>! ! !<camel:from uri="jms:input@z3smq_3001" />! ! !<camel:bean ref=”MujProcesor" />! ! !<camel:to uri="jms:output@z3smq_3001" />! !</camel:route>! </camel:camelContext>! Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Příklad kontextu definovaného pomocí XML: 17 Camel router – konfigurace pomocí Java kódu § Příklad cesty definované pomocí Java kódu RouteBuilder builder = new RouteBuilder() {! public void configure() {! !from("jms:input@z3smq_3001")! ! !.bean(mujProcesor)! ! !.to("jms:output@z3smq_3001");! }! };! Apache Camel / Úvod do EIP a použití frameworku Apache Camel ! 18 @Override! public void process(Exchange exchange) throws Exception {! !Message message = exchange.getIn();! !MRPayload mrPayload = (MRPayload) message.getBody();! !BAPayload baPayload = new BAPayload();! !...! !message.setBody(baPayload);! !exchange.setOut(message);! ! !if (exchange.isFailed()) {! ! !Exception exception = exchange.getException(); ! ! !logger.error(exception);! !}! }! Apache Camel / Úvod do EIP a použití frameworku Apache Camel Camel procesor 19 Camel – směrování zpráv RouteBuilder builder = new RouteBuilder() {! public void configure() {! from(”jms:input")! .filter(header("foo").isEqualTo("bar"))! .to(”jms:output");! }! };! Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Filtrování – filtr zahodí zprávu, která nevyhovuje podmínce 20 Camel – směrování zpráv RouteBuilder builder = new RouteBuilder() {! public void configure() {! !((ChoiceDefinition) from(”jms:input")! ! !.choice()! ! !.when(header("mode").isEqualTo("NORMAL"))! ! ! !.to(jms:normalChannel))! ! !.when(header("mode").isEqualTo("PRIORITY"))! ! ! !.to(jms:priorityChannel);! }! };! Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Podmínky 21 Camel Exception Handling fronta § Lze zakázat znovuposlání zprávy (redelivery policy) § Znovuposlání začíná tam, kde se stala výjimka (zpráva neputuje od začátku cesty) § Použít lze jak XML deklaraci, tak i Java kód Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Možnost definovat, co se stane při výskytu výjimky § Příjemce zprávy, která způsobila výjimku, může být procesor i 22 Camel Exception Handling <camel:onException>! !<camel:exception>java.lang.Exception</camel:exception> ! !<camel:redeliveryPolicy disableRedelivery="true" />! !<camel:process ref="exceptionHandler" />! !<camel:rollback markRollbackOnly="true" />! </camel:onException>! ! § Příklad definice v Java kódu onException(IOException.class).maximumRedeliveries(3); Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Příklad definice v XML : 23 Testování § Vyplatí se použít Spring @RunWith(SpringJUnit4ClassRunner.class)! @ContextConfiguration(locations = !"classpath:testErrorHandlerContext.xml”)! public class RedeliveryProcessorTest {! . . .! ! § Definice proměnných @EndpointInject(ref = "delayer”)! protected MockEndpoint delayer;! Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Deklarace 24 @Test! public void testMsgProcessed () throws Exception {! !delayer.reset();! !Message msg = new DefaultMessage();! !Exchange exchange = delayer! ! ! !.createExchange(ExchangePattern.InOnly); ! !exchange.setIn(msg);! !redeliveryProcessor.process(exchange);! !delayer.expectedMessageCount(1);! !delayer.assertIsSatisfied();! }! Apache Camel / Úvod do EIP a použití frameworku Apache Camel Testování 25 Camel – možnosti optimalizace § Agregace “balících” § Poměr cena/výkon – velké zrychlení chodu aplikace § Dvě varianty: § Bez perzistence § S perzistencí § Nevýhoda – nefunguje dobře s XA transakcemi Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Přenos informací je “drahý”, informace se seskupí a přenáší v 26 Camel – možnosti optimalizace ! Processor checker = (Processor) (new BACheckerMR()); ! ! from("jms:input@z3smq_3001”)! !.process(checker)! !.threads(5)! !.to(jms:output@z3smq_3001);! Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Zpracování ve více vláknech 27 Camel – možnosti optimalizace § Round Robin § Random § Sticky (podle jsessionId, JMSXGroupId…) § Failover § Weighted Round Robin § Weighted Random Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Load balancing – distribuce zátěže na více endpointů 28 Camel – možnosti optimalizace <camel:multicast>! !<camel:loadBalance>! ! !<camel:roundRobin />! ! !<camel:process ref="journalingCore1" />! ! !<camel:process ref="journalingCore2" />! !</camel:loadBalance>! </camel:multicast>! Apache Camel / Úvod do EIP a použití frameworku Apache Camel § Příklad definice v XML – rozhazuje zprávy do dvou procesorů 29 Postřehy § Procesor – metoda process() – I když běží ve vláknech, § Agregátor – XA transakce – nefunguje úplně jak by měl § InOnly typ JMS endpointu – rychlost zapisování, obsah je stejný objekt § JBOSS – bez jboss-camel knihovny nefunguje správně, classloader resolving § JBOSS – transakční manažer/XA transakce a JMS § Spring backend aplikace – použití RAR Apache Camel / Úvod do EIP a použití frameworku Apache Camel instance je jen jedna – pozor na proměnné 30 § http://www.enterpriseintegrationpatterns.com/ § http://camel.apache.org/ § http://fusesource.com Apache Camel / Úvod do EIP a použití frameworku Apache Camel Odkazy na další informace 31 INDRA Czech Repuiblic s.r.o. Karolinská 1 186 00, Prague Czech Republic T +420 246 085 700 F +420 246 085 701 www.indra.cz Apache Camel / Úvod do EIP a použití frameworku Apache Camel Martin Polovinčák Telco [email protected] 32
Podobné dokumenty
JavaHelp Základní popis systému JavaHelp Soucástí vetšiny
poskytuje vývojárum a autorum standardní, plnohodnotný a snadno použitelný systém pro
prezentování on-line informací uživatelum aplikací napsaných v Jave. Tento systém je standardním rozšírením Jav...
Michal Klodner
Michal Klodner
Selected performances, publishing work and papers
scientific research
Metodika výuky a formy vědecké spolupráce s použitím audiovizuálních archívů v mezioborovém
prostředí, 2008 – 20...
Svět BVE - Brno BVE Website
alespoň kontrolu nad tím co stavíte.
Využít ho můžou i uživatelé, protože
pohled na trať z různých úhlů je někdy
opravdu
zajímavý.
Upozorňuji,
že
program jde použít pouze při tvorbě a
prohlížení tr...