apache camel
DESCRIPTION
Apresentação de Tiago Salvado - 11º encontro PT.JUG.TRANSCRIPT
PTJUG – Apache Camel
11º Encontro – 3 Julho de 2013
Sobre mim
Tiago Salvado
Programador (Java, Informix, Oracle) – MoreData www.moredata.pt
E-mail [email protected]
Linkedin http://pt.linkedin.com/in/tiagofpsalvado/
Apache Camel
Conceitos Camel & Java Demonstração Referências
Conceitos - O que é?
Framework open-source para integração de sistemas
A integração é feita através da construção de rotas, definindo a origem das mensagens, o seu processamento e o seu destino
Oferece abstracção dos sistemas a integrar bem como dos tipos e formatos das mensagens transaccionadas
Suporta mais de 150 protocolos e tipos de dados
Conceitos – Geral
Conceitos – Rota
Uma rota permite mover uma mensagem entre uma origem e um destino, efectuando processamento intermédio, de acordo com a sua configuração
A origem e destino da rota são designados endpoints
A configuração de uma rota é feita utilizando: Enterprise Integration Patterns Domain-specific language
Conceitos - Endpoint
Abstracção utilizada pelo Camel para aceder aos pontos dos quais irá receber e enviar mensagens
Diversos protocolos suportados file, sftp, smtp, gmail, jms, http...
Configuração através de URIs
Conceitos – Enterprise Integration Patterns
Os EIP's disponibilizam Soluções para problemas existentes na área da integração Indicam a melhor solução quando há mais do que uma Conjunto de boas práticas
Leitura http://camel.apache.org/enterprise-integration-patterns.html http://www.enterpriseintegrationpatterns.com http://www.eaipatterns.com/toc.html
Conceitos – Enterprise Integration Patterns
Conceitos – Domain-specific language
O Camel permite a criação de rotas disponibilizando DSLs para várias linguagens de programação como o Java, Scala, Groovy mas também em XML (Spring DSL)
Fluent Java API
Java DSL from("ftp://md.pt/X?username=a&password=b")”).to(”file:data/orders”)
from(”file:inbox”)
.split(body(String.class).tokenize(”\n”)).to(”jms:queue:new.orders”)
Camel & Java – Camel Context
Responsável por gerir todos os componentes associados ao Camel
Interface org.apache.camel.CamelContext
Camel & Java - Message
Entidades utilizadas para comunicar entre sistemas
Interface org.apache.camel.Message
Camel & Java - Exchange
Contem a mensagem e o seu estado durante o ”percurso” efectuado pela rota
Este objecto está disponível em cada fase de processamento da rota, permitindo aceder a alterações ou decisões efectuadas anteriormente
Interface org.apache.camel.Exchange
Camel & Java - Exchange
Camel & Java - Route
Classes abstracta para criação de rotas org.apache.camel.builder.RouteBuilder
Método a implementar que conterá a configuração da rota public abstract void configure() throws Exception;
Camel & Java - Processor
Permite efectuar processamento intermédio sob a mensagem transaccionada
Interface org.apache.camel.Processor
Método a implementar void process(Exchange exchange) throws Exception;
Demonstração
JDK Eclipse
Maven camel-archetype-java
Apache Camel
Aplicação simples que espera ficheiros XML correspondentes a viagens e que filtra e organiza as mesmas por destino
Referências
Livro Camel in Action (CLAUS IBSEN, JONATHAN ANSTEY)
WebSite http://camel.apache.org