Apache Camel

Preview:

DESCRIPTION

Apresentação de Tiago Salvado - 11º encontro PT.JUG.

Citation preview

PTJUG – Apache Camel

11º Encontro – 3 Julho de 2013

Sobre mim

Tiago Salvado

Programador (Java, Informix, Oracle) – MoreData www.moredata.pt

E-mail tiagosalvado10@gmail.com

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