Apache Camel Systémová Integrace Pavel Macík

Slides:



Advertisements
Podobné prezentace
Rozvojové programy pro VVŠ 8. února Rozvojové programy VVŠ Rozvojové programy 2012 Požadavky vysokých škol v centralizovaných projektech → finanční.
Advertisements

Hotel Tatra, Velké Karlovice 23. – 25. dubna 2007 S4U – Seminář o Univerzitním informačním systému 1 Osobní management Tomáš Procházka.
Program rozvoje Ústeckého kraje Obsah prezentace Představení PRÚK účel zpracování struktura PRÚK struktura priorit a opatření indikátory.
Elektronické učební materiály - II. stupeň Informatika 9 Autor: Bc. Pavel Šiktanc – posílání příloh Jak poslat em celý soubor?
ELEKTRONICKÉ ZABEZPEČOVACÍ SYSTÉMY. Název projektu: Nové ICT rozvíjí matematické a odborné kompetence Číslo projektu: CZ.1.07/1.5.00/ Název školy:
Informace fyzických a právnických osob na Portálu veřejné správy Ing. Pavel Tesař, projektový manažer odbor eGovernmentu
BEZPEČNOSTNÍ TECHNOLOGIE I Operační program Vzdělávání pro konkurenceschopnost Projekt: Vzdělávání pro bezpečnostní systém státu (reg. č.: CZ.1.01/2.2.00/ )
Název školy ZÁKLADNÍ ŠKOLA, JIČÍN, HUSOVA 170 Číslo projektu CZ.1.07/1.4.00/ Číslo a název klíčové aktivity 3.2 Inovace a zkvalitnění výuky prostřednictvím.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Prostředí internetu Číslo DUM: III/2/VT/2/2/27 Vzdělávací předmět: Výpočetní technika Tematická oblast:
Spolupráce mezi výkresy bloky (s atributy) Design center externí reference.
Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu : CZ.1.07/1.5.00/ Šablona:III/2č. materiálu:VY_32_INOVACE_12.
POS 40 – 83. Základy datové komunikace - MULTIPLEX Kmitočtovým dělením (FDMA) – Přidělení kmitočtu jednotlivým uživatelům = šířka pásma se rozdělí na.
Počítačové sítě 14. IPv4 © Milan Keršlágerhttp:// Obsah: ● IP protokol, IP adresa,
I DENTIFIKACE NA INTERNETU Mgr. Marie Kardová Leden 2014.
Security Systems BU Communication Systems Slide 1 Plena Voice Alarm System 2. fáze.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr. Petra Šandová Název: VY_32_INOVACE_5B_INF3_16_ Téma: pro 4.,5.ročník ZŠ, vytvořeno:
Pracovní skupina Portál elektronického zdravotnictví NSeZ – neveřejná prezentace Emauzy, MUDr. Pavel VEPŘEK předseda pracovní skupiny.
Digitální učební materiál Název projektu: Inovace vzdělávání na SPŠ a VOŠ PísekČíslo projektu: CZ.1.07/1.5.00/ Škola: Střední průmyslová škola a.
Mobilní sítě Jakovljevič, Sklenář. obsah Protokol ICMP Ping Traceroute DNS 1G, 2G, 3G, 4G, LTE Virtuální mobilní operátor.
Personální a mzdová agenda ve vybraném podniku Autorka bakalářské práce: Monika Deutschová Vedoucí bakalářské práce: Ing. Kristina Kabourková Vysoká škola.
ŠKOLA: Gymnázium, Chomutov, Mostecká 3000, příspěvková organizace AUTOR:Mgr. Jiří Kolář NÁZEV:VY_32_INOVACE_08B_15_Sítě_internet2 TEMA:HARDWARE A SOFTWARE.
OPERAČNÍ SYSTÉMY Část 5 – souborové systémy
Architektura operačních systémů
PŘIHLÁŠENÍ K ELEKTRONICKÉ EVIDENCI TRŽEB
Věcné autority v roce 2016
Systémové databáze v SQL Serveru
Síťové Protokoly.
PŘESHRANIČNÍ VLIVY Gijs van Luyn InfoMil
Technické vybavení počítače - Počítač PC
Internet.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr
COM – Práce s objektovým modelem jiné aplikace
ELEKTRONICKÉ ZABEZPEČOVACÍ SYSTÉMY
Komunikační model TCP/IP
Kurz algoritmizace a programování v jazyce C
Uživatelem definované datové typy
Téma 11: Finanční plánování
VY_32_INOVACE_2C_19_ZIVOTOPIS Životopis dubna 2012
Zkušenosti s nasazením J2EE aplikací na AS GlassFish
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně
Sémantické aspekty katalogizace VI
Dobrá praxe Krajského úřadu Jihomoravského kraje
Inf Ovládání operačního systému
Databáze MS ACCESS 2010.
Datové typy v jazyce C Datové typy void skalární aritmetické
Abstract Factory.
Financováno z ESF a státního rozpočtu ČR.
C# Vícevláknové aplikace
Inf Vývojový diagram.
2. seminární úkol - projekt
Technické prostředky v požární ochraně
Informatika pro ekonomy přednáška 8
Realizace Vnitřních grantů 2015
Informatika – Grafika.
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Hypertext Markup Language
Prezentace SDAT pro ČBA
Remote login.
Builder „Návrhový vzor oddělující konstrukci složitých objektů od jejich reprezentace. Čímž je možné použít stejný proces konstrukce pro rozdílné reprezentace.“
název projektu: Šablony Špičák číslo projektu: CZ.1.07/1.4.00/
Přednášky z Distribuovaných systémů
Úroveň přístupu ke komunikačnímu médiu
Datové typy v jazyce C Datové typy void skalární aritmetické
Směrování II.
Informatika pro ekonomy přednáška 8
Informační systém základních registrů
ÚLOHA STÁTU V TRŽNÍ EKONOMICE
Současné aktivity v oblasti České podnikatelské rady pro udržitelný rozvoj a Světové podnikatelské rady pro udržitelný rozvoj.
Class Diagrams.
Výstrahy ČHMÚ DISTRIBUCE
Transkript prezentace:

Apache Camel Systémová Integrace Pavel Macík (pmacik@redhat.com) 24.9.2015

Co nás čeká Představení Apache Camel Komponenty Camelu Integrační návrhové vzory (EIP) Logování Zpracování vyjímek a chyb Testování aplikací pro Camel

Představení Apache Camel Seznamte se - Camel Použití Route Exchange Message Architektura Vývoj aplikací v Camelu

Seznamte se - Camel Open-source systém pro integraci různorodých systémů Směrování a transformace zpráv cestujícími mezi systémy Implementován v jazyce Java Implementuje Integrační návrhové vzory (EIP = Enterprise Integration Patterns)

Použití

Camel Route Definice trasy pro cestu a zpracování zprávy

Message Exchange Exchange - datová struktura informace o výměně zpráv směrovací informace vlastnosti trasy

Message Exchange InOnly - pouze odeslání zprávy

Message Exchange InOut - po odeslání zprávy očekávána odpověď

Architektura

Vývoj aplikací v Camelu Spring DSL Java DSL Maven - Demo

Spring DSL <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="file:src/data?noop=true"/> <choice> <when> <xpath>/person/city = 'London'</xpath> <log message="UK message"/> <to uri="file:target/messages/uk"/> </when> <otherwise> <log message="Other message"/> <to uri="file:target/messages/others"/> </otherwise> </choice> </route> </camelContext> </beans>

Java DSL package com.redhat.brq.integration; import org.apache.camel.builder.RouteBuilder; public class MyRouteBuilder extends RouteBuilder { public void configure() { from("file:src/data?noop=true") .choice() .when(xpath("/person/city = 'London'")) .log("UK message") .to("file:target/messages/uk") .otherwise() .log("Other message") .to("file:target/messages/others"); } }

Maven - Demo Spring DSL mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes - DarchetypeArtifactId=camel-archetype-spring - DgroupId=com.redhat.brq.integration -DartifactId=maven-camel-spring;

Maven - Demo Java DSL mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes - DarchetypeArtifactId=camel-archetype-java - DgroupId=com.redhat.brq.integration -DartifactId=maven-camel-java;

Komponenty Camelu Model komponenty Užitečné komponenty Bean - Java objekt File - soubory Jetty - HTTP(s) Restlet - JAX-RS Rest DSL ActiveMQ MQTT JMS

Model komponenty

Model komponenty Komponenta Koncový bod továtna na koncové body (endpointy) Koncový bod reprezentuje začátek nebo konec kanálu zprávy z/do trasy Camelu popsán prostřednictvím URI schema:context/path?options schema = identifikuje komponentu context/path = identifikuje umístěná zdroje nebo cíle zprávy options = nastavení vlastností komponenty

Model komponenty Konzument (from) Producent (to) zdroj, z kterého je zpráva přijata Producent (to) cíl, do kterého je zpráva odeslána

Komponenta Bean Umožňuje použít metody Java objektů pro zpracování zpráv URI pattern: bean:beanId[?options] Užitečné vlastnosti method - jméno metody, která se má zavolat

Komponenta Bean Java objekt Camel public class MyBean { public void process(String msg) { System.out.println("Zprava: " + msg); } } Camel from("file:src/data?noop=true") .bean(new MyBean(), "process"); Více informací na http://camel.apache.org/bean.html

Komponenta File Umožňuje přístup k souborovému systému URI pattern: file:directoryName[?options] Užitečné vlastnosti noop - pokud je true, soubory po zpracování nejsou přemístěny ani smazány include - regulární výraz omezující jména souborů, které se mají zpracovat exclude - regulární výraz označující soubory, které se mají ignorovat Více informací na http://camel.apache.org/file2.html

Komponenta Jetty Poskytuje koncové body založené na HTTP URI pattern: Více informací na http://camel.apache.org/jetty.html

Komponenta Restlet Poskytuje koncové body založené na REST HTTP URI pattern: restlet:restletUrl[?options] restletUrl = protocol://hostname[:port][/resourcePattern]

Komponenta Restlet Restlet REST DSL: public void configure() { from("restlet:http://localhost:8080/rest-end?restletMethods=POST").log("POST: ${body}"); } REST DSL: public void configure() { rest("/rest-end").consumes("text/plain").produces("text/plain") .post().to("direct:post"); from("direct:post").log("POST: ${body}"); }

Komponenta ActiveMQ ActiveMQ Systém poskytující kompletní služby týkající se zpracování zpráv Poskytuje různá rozhraní, např. MQTT JMS Více informací na http://activemq.apache.org/

Komponenta ActiveMQ - JMS URI pattern: activemq:[queue:|topic:]destinationName Více informací http://camel.apache.org/activemq.html http://camel.apache.org/jms.html

Komponenta ActiveMQ - MQTT Protokol pro komunikaci mezi různými zařízeními prostřednictvím zasíláním zpráv de-facto standard pro IoT Zapnutí MQTT u ActiveMQ brokeru <transportConnector name="mqtt" uri="mqtt://localhost:1883"/> URI pattern: mqtt://name[?options] Více informací na http://camel.apache.org/mqtt.html

Integrační návrhové vzory (EIP) EIP = Enterprise Integration Patterns Content based routing Splitter Multicast Aggregator Transformace zpráv http://camel.apache.org/eip.html http://www.enterpriseintegrationpatterns.com/

Integrační návrhové vzory Content based routing Směrování zpráv na základě jejího obsahu Více informací na http://camel.apache.org/content-based-router.html

Integrační návrhové vzory Content based routing from("file:src/data?noop=true") .choice() .when(xpath("/person/city = 'London'")) .log("UK message") .to("file:target/messages/uk") .otherwise() .log("Other message") .to("file:target/messages/others");

Integrační návrhové vzory Splitter rozdělí zprávu na menší části a ty pak posílá samostatně Více informací na http://camel.apache.org/splitter.html

Integrační návrhové vzory Multicast Umožňuje rozeslat stejnou zprávu na více koncových bodů a v každém z nich ji zpracovat jinak. Více informací na http://camel.apache.org/multicast.html

Integrační návrhové vzory Aggregator Slučuje více zpráv do jedné na základě agregační strategie Více informací na http://camel.apache.org/aggregator.html

Integrační návrhové vzory Transformace zpráv Transformuje příchozí zprávu a pošle ji dál

Integrační návrhové vzory Transformace zpráv - Simple from("file:src/data?noop=true") .transform(simple("Odpoved: ${body}")).to("file:target");

Integrační návrhové vzory Transformace zpráv - CSV Umožňuje transformaci záznamů z CSV souboru do Java objektů a zpět. Java objekt @CsvRecord(separator=";", crlf="UNIX") public Class Person { @DataField(pos = 1) private String name; @DataField(pos = 2) private String city; } Camel BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.redhat.brq.integration"); from("file:src/data?noop=true") .unmarshal(bindy).log("${body}");

Integrační návrhové vzory Transformace zpráv - CSV Více informací na http://camel.apache.org/bindy.html

Integrační návrhové vzory Transformace zpráv - JAXB (XML) Umožňuje transformaci XML souboru do Java objektu a zpět. Java objekt @XmlRootElement(name = "person") @XmlAccessorType(XmlAccessType.FIELD) public class Person { @XmlAttribute private String user; @XmlElement private String firstName; @XmlElement private String lastName; @XmlElement private String city; }

Integrační návrhové vzory Transformace zpráv - JAXB (XML) MyBean public class MyBean { public void process(Person p) { System.out.println(p.toString()); } } Camel JaxbDataFormat jaxb = new JaxbDataFormat("com.redhat.brq.integration"); from("file:src/data?noop=true") .unmarshal(jaxb) .bean(new MyBean(), "process");

Logování v Camelu Komponenta, která umožňnuje logovat na různých úrovní důležitosti přímo z jednotlivých tras URI pattern: log:loggingCategory[?options] Více informací na http://camel.apache.org/log.html

Zpracování vyjímek a chyb Camel onException(MyException.class).to("file:target/exceptions"); Více informací na http://camel.apache.org/exception-clause.html

Testování aplikací pro Camel CamelTestSupport (JUnit) PaxExam

Děkuji za pozornost