Apache Camel. Úvod do EIP a použití frameworku Apache Camel Prezentace pro CZJUG

Podobné dokumenty
Využití JBoss Fuse ve skandinávské energetice

SOAP & REST služby. Rozdíly, architektury, použití

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Softwarové komponenty a Internet

Tvorba informačních systémů

Spring framework 2.0. Roman Pichlík CZJUG

Semináˇr Java X J2EE Semináˇr Java X p.1/23

(Enterprise) JavaBeans. Lekce 7

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

PA165: Úvod do Java EE. Petr Adámek

Řešení integrace Profinit ESB. Michal Bureš

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

KIV/PIA 2013 Jan Tichava

Java Message Service (JMS) Martin Ptáček, KOMIX s.r.o.

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Enterprise Java Beans 3.0

TECHNICKÁ SPECIFIKACE VEŘEJNÉ ZAKÁZKY

Návrhové vzory Tvorba objektů

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Požadavky pro výběrová řízení TerraBus ESB/G2x

Motivační příklad reálný svět. výroba (assembly line)

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

TÉMATICKÝ OKRUH Softwarové inženýrství

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Procesy a vlákna (Processes and Threads)

UJO Framework. revoluční architektura beans. verze

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Vytváření a použití knihoven tříd

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

Java a Caché IV: Manipulace s objekty

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Tvorba informačních systémů

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Server Security, Serverové produkty

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Architektury informačních systémů

Integrací aplikací proti blackoutům

Architektury informačních systémů

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Správa a sledování SOA systémů v Oracle SOA Suite

Michal Krátký, Miroslav Beneš

O Apache Derby detailněji. Hynek Mlnařík

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Architektura aplikace

Architektura softwarových systémů

Design systému. Komponentová versus procesní architektura

1 Nejkratší cesta grafem

Testování Java EE aplikací Petr Adámek

Tvorba informačních systémů

RMI Remote Method Invocation

Architektura, design, konstrukce

ZADÁVACÍ DOKUMENTACE pro výběrové řízení na dodavatele vzdělávání v oblasti integrace systémů ICT

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Název prezentace 1. Poskytovatel garantovaných služeb NDC včetně kybernetické bezpečnosti ve státní správě

X33EJA Enterprise Java

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Komponentový návrh SW

Platformy / technologie. Jaroslav Žáček

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Úvod do Web Services

Testování SOA systémů v Oracle SOA Suite

JAVA Unit testing Java, zimní semestr

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Představuje. Technický Informační Systém nové generace

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Modul. Univerzální tabulkový export

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Tvorba informačních systémů

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Novinky v oblasti SAP Mobility. Martin Zikmund, Presale Mobility Platforms Miroslav Řehoř, Account Executive

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Bakalářská práce, FEL ČVUT Praha. Michal Turek. červenec 2007

MODULÁRNÍ REDAKČNÍ SYSTÉM (CMS), SE ZAMĚŘENÍM PRO FIREMNÍ

<Insert Picture Here> Vývoj portálových řešení v Javě

Web Services na SOAP

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Z. Kotala, P. Toman: Java ( Obsah )

Příloha 1 Specifikace předmětu plnění

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Ročníkový projekt. Jaroslav Žáček

Podniková sběrnice služeb

MBI - technologická realizace modelu

Enterprise Architektura

Agenda. Smysl teoretických cvičení Klasifikace Obecná pravidla Bugzilla Klasické problémy Poznámky k jednotlivým pojmům Antipatterns Testování testů

SOA Enterprise Service Bus

Návrhové vzory OMO, LS 2014/2015

Spring Framework Handout

Transkript:

Apache Camel Úvod do EIP a použití frameworku Apache Camel Prezentace pro CZJUG 1

Témata Úvod do problému EIP, nástroje, které se používají Apache Camel Architektura Spring Testování Junit Optimalizace Postřehy 2

Kdy mluvíme o integraci aplikací? 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í 3

Pomocí čeho integrovat? Přenos souborů Sdílená databáze RMI vzdálené volání procedur Messaging 4

Messaging některé pojmy z EIP 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 5

EIP Enterprise Integration Patterns Hlavní úkol: 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 6

Nástroje k implementaci EIP JMS/Java 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 7

Camel Framework 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í 8

Camel Framework Architektura: Komponenta 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 9

Camel Framework 10

Camel deployment Možnosti nasazení: Spring IoC kontejner Samostatně OSGi kontejner 11

Camel a Spring Transakce XML konfigurace Bean Integration Dependency Injection camel context/spring beany JMS komponenta postavena na JMS Template 12

Camel komponenty 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ší 13

Camel endpoint 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í 14

Camel endpoint! Varianta definice endpointu v xml Odkaz na endpoint pomocí ref=id <camel:endpoint id="input uri="jms:input@z3smq_3001" />! 15

Camel router Router je reprezentován CamelContext (kontext) objektem Kontext obsahuje: 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 16

Camel router XML konifgurace Příklad kontextu definovaného pomocí XML: <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>! 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");! 18

Camel procesor @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);!!}! 19

Camel směrování zpráv Filtrování filtr zahodí zprávu, která nevyhovuje podmínce RouteBuilder builder = new RouteBuilder() {! public void configure() {! from( jms:input")!.filter(header("foo").isequalto("bar"))!.to( jms:output");! }! };! 20

Camel směrování zpráv Podmínky 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);! }! };! 21

Camel Exception Handling 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 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 22

Camel Exception Handling Příklad definice v XML : <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); 23

Testování Vyplatí se použít Spring Deklarace @RunWith(SpringJUnit4ClassRunner.class)! @ContextConfiguration(locations =!"classpath:testerrorhandlercontext.xml )! public class RedeliveryProcessorTest {!...!! Definice proměnných @EndpointInject(ref = "delayer )! protected MockEndpoint delayer;! 24

Testování @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();! 25

Camel možnosti optimalizace Agregace Přenos informací je drahý, informace se seskupí a přenáší v 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 26

Camel možnosti optimalizace Zpracování ve více vláknech! Processor checker = (Processor) (new BACheckerMR());!! from("jms:input@z3smq_3001 )!!.process(checker)!!.threads(5)!!.to(jms:output@z3smq_3001);! 27

Camel možnosti optimalizace Load balancing distribuce zátěže na více endpointů Round Robin Random Sticky (podle jsessionid, JMSXGroupId ) Failover Weighted Round Robin Weighted Random 28

Camel možnosti optimalizace Příklad definice v XML rozhazuje zprávy do dvou procesorů <camel:multicast>!!<camel:loadbalance>!!!<camel:roundrobin />!!!<camel:process ref="journalingcore1" />!!!<camel:process ref="journalingcore2" />!!</camel:loadbalance>! </camel:multicast>! 29

Postřehy Procesor metoda process() I když běží ve vláknech, instance je jen jedna pozor na proměnné 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 30

Odkazy na další informace http://www.enterpriseintegrationpatterns.com/ http://camel.apache.org/ http://fusesource.com 31

Martin Polovinčák Telco mpolovincak@indracompany.com 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 32