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

Apache Camel

  • 1.
    PTJUG – ApacheCamel 11º Encontro – 3 Julho de 2013
  • 2.
    Sobre mim  TiagoSalvado  Programador (Java, Informix, Oracle) – MoreData  www.moredata.pt  E-mail  tiagosalvado10@gmail.com  Linkedin  http://pt.linkedin.com/in/tiagofpsalvado/
  • 3.
    Apache Camel  Conceitos Camel & Java  Demonstração  Referências
  • 4.
    Conceitos - Oque é?  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
  • 5.
  • 6.
    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
  • 7.
    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
  • 8.
    Conceitos – EnterpriseIntegration 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
  • 9.
    Conceitos – EnterpriseIntegration Patterns
  • 10.
    Conceitos – Domain-specificlanguage  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”)
  • 11.
    Camel & Java– Camel Context  Responsável por gerir todos os componentes associados ao Camel  Interface  org.apache.camel.CamelContext
  • 12.
    Camel & Java- Message  Entidades utilizadas para comunicar entre sistemas  Interface  org.apache.camel.Message
  • 13.
    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
  • 14.
    Camel & Java- Exchange
  • 15.
    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;
  • 16.
    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;
  • 17.
    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
  • 18.
    Referências  Livro  Camelin Action (CLAUS IBSEN, JONATHAN ANSTEY)  WebSite  http://camel.apache.org