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

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

Více

Michal Klodner

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

Více

Svět BVE - Brno BVE Website

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

Více

2004 / 18 září

2004 / 18 září Podejme pomocnou ruku Jednohubky

Více