SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Produtividade em Integração de
Aplicações com Apache Camel




                         Globalcode	
  –	
  Open4education
Para ganhar um refcardz
The Top Twelve Integration Patterns for Apache Camel




!   Envie um Twitter contendo:

#TDC2012 #ApacheCamel @pangeanet

Quero ganhar um refcardz!




                                                       Globalcode	
  –	
  Open4education
Meta




  “Apresentar a DSL Java do Apache Camel
   para tornar as integrações mais simples e
     produtivas para os desenvolvedores.”




                                      Globalcode	
  –	
  Open4education
Agenda
!     Conceitos Fundamentais
!     Arquitetura do Apache Camel
!     Desenho & Implementação
!     Demo
!     Conclusão
!     Perguntas & Respostas




                                    Globalcode	
  –	
  Open4education
O que são DSL’s*?
   DSL’s são linguagens de programação com
 expressividade limitada e que foram desenhadas
 para tratar problemas de um domínio específico.
      Linguagem                  Domínio Específico
CSS                 Definição de estilo e layout de páginas web
SQL                 Consultas em bases de dados relacionais
XUL                 Definição de interfaces com o usuário
Expressão Regular   Casamento de padrões em strings
Ant                 Automatização de build’s
JPA Criteria        Consultas de entidades OO
                                        * Domain Specific Languages.

                                                    Globalcode	
  –	
  Open4education
A DSL do Apache Camel

  Domínio:
  ! Integração de aplicações
    utilizando padrões do livro
    Enterprise Integration Patterns.




     “Apache Camel é um
   framework open-source
 flexível baseado em EIPs.”
                                   Camel implements EIPs


                                           Globalcode	
  –	
  Open4education
Benefícios de uma boa DSL


                 “Produtividade”

  1.    O código fica mais fácil de compreender;
  2.    O programa fica mais simples de modificar;
  3.    Melhora a produtividade do desenvolvedor;
  4.    É facilmente entendida por especialistas do
        domínio.


                                          Globalcode	
  –	
  Open4education
Por que usar o Camel?

        “Não reinventar a roda”

   ! Ele faz o trabalho pesado enquanto você foca no
     problema de negócio.




                                          Globalcode	
  –	
  Open4education
Números de um caso real
  !   Implementação do padrão Aggregator




  !   Sem usar o Apache Camel
     !  ~2711 LOC, ~25 Classes

  !   Usando o Apache Camel e sua DSL Java
                                                   ~30x
     !  ~75 LOC, ~5 Classes


                                             Globalcode	
  –	
  Open4education
Agenda
!     Conceitos Fundamentais
!     Arquitetura do Apache Camel
!     Desenho & Implementação
!     Demo
!     Conclusão
!     Perguntas & Respostas




                                    Globalcode	
  –	
  Open4education
Roteamento
com a DSL Java




 <<Endpoint A>>     <<Filter>>       <<Endpoint B>>
                  <<Processor>>




 from(A).filter(isValid).to(B);

                                  Globalcode	
  –	
  Open4education
Endpoint URI


"schema:contextpath?option=value"


 "file:c:dir?delay=5000"

 "jms:aQueue?competingConsumers=10"



                            Globalcode	
  –	
  Open4education
JMS com a DSL Java




                  <<Channel>>   <<Filter>>
 <<Endpoint A>>                                 <<Endpoint B>>




from(”file:c:dir”).to(”jms:aQueue”);
from(”jms:aQueue”).filter(isValid).to(B);

                                             Globalcode	
  –	
  Open4education
Arquitetura do Camel
a 10 mil pés
Engine de       Camel Context
Roteamento
                Route 1                                                          Processadores
A DSL liga
endpoints e      Route 2                                                         É onde o
processadores                                                                    processamento da
para criar          Route 3
                                                                                 lógica de
rotas.
                                                                                 integração
                                                                                 acontece.

                                       ...                         ...           A DSL é usada
                                                                                 para implementar

                 File      JMS
                                 ...    FTP
                                                                                 os padrões de
                                                                                 integração.
                                              Componentes

                                              A DSL fornecem uma
                                              interface uniforme para
                                              criação de endpoints.

                                                                        Globalcode	
  –	
  Open4education
Arquitetura modular
e plugável
  !   Mais de 50 EIPs implementados
    http://camel.apache.org/enterprise_integration_patterns.html
  !   Mais de 80 Components disponíveis
    (activemq, jms, bean, cxf, file, ftp, jdbc, ibatis, jetty, mina, netty,
    timer, xslt, rss, atom, twitter, etc...)
    http://camel.apache.org/components.html
  !   Diversos formatos de dados
    (csv, serialization, zip, hl7, soap, jaxb, etc...)
    http://camel.apache.org/data-format.html
  !   Diversas linguagens suportadas
    (EL, Simple, XQuery, Xpath, JavaScript, Ruby, Python, PHP, etc...)
    http://camel.apache.org/languages.html


                                                            Globalcode	
  –	
  Open4education
Agenda
!     Conceitos Fundamentais
!     Arquitetura do Apache Camel
!     Desenho & Implementação
!     Demo
!     Conclusão
!     Perguntas & Respostas




                                    Globalcode	
  –	
  Open4education
Contexto da Aplicação



                                     Logística de
                                       Entrega



Site E-Commerce      Camel
                  E-Commerce



                                     Controle de
                                      Estoque



                               Globalcode	
  –	
  Open4education
Requisitos de Integração
!   Buscar pedidos em arquivos XML do site em um
    servidor FTP; Endpoint FTP
!   Trabalhar com modelo POJO; Translator
!   Processar os tipos de itens por processadores
    especializados; Splitter e Content Enricher
!   Entregar o pedido completo; Aggregator
!   Disponibilizar arquivos TXT com dados dos
    pedidos para entrega; Endpoint File
!   Gravar dados dos pedidos em banco de dados
    para controle de estoque. Endpoint JPA

                                       Globalcode	
  –	
  Open4education
<<Message>>                    <<Message>>
                                                Pedido XML                    Pedido POJO




Site E-Commerce
                                <<Endpoint>>
                                 Pedido FTP
                                                             <<Translator>>
                                                               Pedido XML
                                                               para POJO
                                                                                               <<Channel>>
                                                                                                 Pedidos             Desenho da
                                                                                                                     Solução com EIP’s

                                                                                            <<Content Enricher>>
                                                                                                  Produtos
                                                                                                 Artesanais

                                                                                                                       <<Channel>>
                   <<Splitter>>           <<Channel>>     <<Content Based Router>>                                         Itens
                  Pedido em Itens            Itens              Tipo do Item                                           Processados


                                                                                            <<Content Enricher>>
                                                                                                  Produtos
                                                                                               Industrializados




                                                                          <<Channel>>              <<Translator>>                         Logística de
                                                                          Pedidos para                                  <<Endpoint>>
                                                                                                  Pedido POJO para                          Entrega
                                                                            Entrega                                      Arquivo TXT
                                                                                                 TXT com Freemarker


                       <<Aggregator>>          <<Recipient List>>
                       Itens de Pedidos          Pedido Pronto
                                                   Multicast

                                                                          <<Channel>>                <<Endpoint>>      Controle de
                                                                           Pedidos para             Banco de Dados      Estoque
                                                                         Baixa no Estoque              Endpoint
                                                                                                                          Globalcode	
  –	
  Open4education
<<Message>>                    <<Message>>
                                                Pedido XML                    Pedido POJO




Site E-Commerce
                                <<Endpoint>>
                                 Pedido FTP
                                                             <<Translator>>
                                                               Pedido XML
                                                               para POJO
                                                                                               <<Channel>>
                                                                                                 Pedidos             Desenho da
                                                                                                                     Solução com EIP’s

                                                                                            <<Content Enricher>>
                                                                                                  Produtos
                                                                                                 Artesanais

                                                                                                                       <<Channel>>
                   <<Splitter>>           <<Channel>>     <<Content Based Router>>                                         Itens
                  Pedido em Itens            Itens              Tipo do Item                                           Processados


                                                                                            <<Content Enricher>>
                                                                                                  Produtos
                                                                                               Industrializados




                                                                          <<Channel>>              <<Translator>>                         Logística de
                                                                          Pedidos para                                  <<Endpoint>>
                                                                                                  Pedido POJO para                          Entrega
                                                                            Entrega                                      Arquivo TXT
                                                                                                 TXT com Freemarker


                       <<Aggregator>>          <<Recipient List>>
                       Itens de Pedidos          Pedido Pronto
                                                   Multicast

                                                                          <<Channel>>                <<Endpoint>>      Controle de
                                                                           Pedidos para             Banco de Dados      Estoque
                                                                         Baixa no Estoque              Endpoint
                                                                                                                          Globalcode	
  –	
  Open4education
ROTA 1: Endpoint FTP +
Translator
                                            <<Message>>                    <<Message>>
                                             Pedido XML                    Pedido POJO




                             <<Endpoint>>                 <<Translator>>                 <<Channel>>
           Site E-Commerce
                              Pedido FTP                    Pedido XML                     Pedidos
                                                            para POJO



public class BuscaPedidoXmlFtpRouteBuilder
                                     extends RouteBuilder {
  @Override
  public void configure() {

        from("ftp:localhost:2121/pedidos?
                       username=xxxxxxx&password=xxxxxxxxxx")
           .convertBodyTo(Pedido.class)
        .to("jms:pedidos");

    }
}

                                                                                         Globalcode	
  –	
  Open4education
Arquivo XML de Pedido
 <pedido cliente="11111111111">
     <itens>
         <item>
              <nome>Camisa customizada</nome>
              <quantidade>1</quantidade>
              <tipo>ARTESANAL</tipo>
         </item>
         <item>
              <nome>Camisa branca</nome>
              <quantidade>3</quantidade>
              <tipo>INDUSTRIALIZADO</tipo>
         </item>
     </itens>
 </pedido>

                                         Globalcode	
  –	
  Open4education
Pedido com anotações
JAXB e JPA
   @XmlRootElement
   @XmlAccessorType(XmlAccessType.FIELD)
   @Entity
   public class Pedido implements Serializable {
         @XmlAttribute
         private String cliente;
         @XmlElementWrapper
         @XmlElement(name="item")
         @OneToMany(cascade = CascadeType.ALL)
         private List<Item> itens;
   …
   }

                                         Globalcode	
  –	
  Open4education
ROTA 2: Splitter


          <<Channel>>    <<Splitter>>     <<Channel>>
            Pedidos     Pedido em Itens      Itens




from("jms:pedidos")
.split().method(PedidoSplitter.class)
  .setHeader("PEDIDO_CORRELATION_ID",
                  property("CamelCorrelationId"))
  .setHeader("PEDIDO_SIZE",
                  property("CamelSplitSize"))
.to("jms:itens");



                                                    Globalcode	
  –	
  Open4education
ROTA 3: Content Based
Router
                                                  <<Content Enricher>>
                                                        Produtos
                                                       Artesanais

                                                                         <<Channel>>
         <<Channel>>   <<Content Based Router>>                              Itens
            Itens            Tipo do Item                                Processados


                                                  <<Content Enricher>>
                                                        Produtos
from("jms:itens")                                    Industrializados

  .choice()
    .when(simple("${body.itens[0].tipo} ==
                                'ARTESANAL'"))
      .bean(ProcessadorArtesanal.class)
    .when(simple("${body.itens[0].tipo} ==
                                'INDUSTRIALIZADO'"))
      .bean(ProcessadorIndustrializado.class)
  .end()
.to("jms:itensProcessados");

                                                                          Globalcode	
  –	
  Open4education
Um Processador de
Pedidos

    public class ProcessadorArtesanal {
      public Pedido preparar(Pedido pedido) {
          Item item = pedido.getItens().get(0);
          item.preparar();
          // simulando tempo de processamento
          Thread.sleep(1000);
          return pedido;
    }




                                        Globalcode	
  –	
  Open4education
ROTA 4: Aggregator +
“Multicast”
                                                             <<Channel>>
                                                             Pedidos para
                                                               Entrega

      <<Channel>>
                    <<Aggregator>>     <<Recipient List>>
          Itens
                    Itens de Pedidos     Pedido Pronto
      Processados
                                           Multicast

                                                             <<Channel>>
                                                              Pedidos para
                                                            Baixa no Estoque

from("jms:itensProcessados")
  .aggregate(header("PEDIDO_CORRELATION_ID"),
                  new PedidoAggregationStrategy())
            .completionSize(header("PEDIDO_SIZE"))
  .multicast().parallelProcessing()
.to("jms:pedidosProntosEntrega",
            "jms:pedidosProntosBaixaEstoque");

                                                                  Globalcode	
  –	
  Open4education
ROTA 5: Endpoints
Freemarker e File

      <<Channel>>      <<Translator>>                    Logística de
      Pedidos para                        <<Endpoint>>
                      Pedido POJO para                     Entrega
        Entrega                            Arquivo TXT
                     TXT com Freemarker




from("jms:pedidosProntosEntrega")
.to("freemarker:ecommerce/pedido_ecommerce.ftl")
.to("file:ecommerce/entregas/?
      fileName=entrega-
          $simple{date:now:yyyyMMddHHmmssSSS}.txt");




                                                         Globalcode	
  –	
  Open4education
ROTA 6: Endpoint JPA


        <<Channel>>        <<Endpoint>>    Controle de
         Pedidos para     Banco de Dados    Estoque
       Baixa no Estoque      Endpoint




 from("jms:pedidosProntosBaixaEstoque")
 .to("jpa:tdc2012.camel.ecommerce.domain.Pedido");




                                                     Globalcode	
  –	
  Open4education
Demo
!   - Execução da aplicação;

!   - Subindo o contexto do Apache Camel;

!   - Escalabilidade com o Competing Consumers.




                                       Globalcode	
  –	
  Open4education
Agenda
!     Conceitos Fundamentais
!     Arquitetura do Apache Camel
!     Desenho & Implementação
!     Demo
!     Conclusão
!     Perguntas & Respostas




                                    Globalcode	
  –	
  Open4education
Conclusão
A DSL Java do Apache Camel confere:

! Vocabulário comum baseado em EIPs;
! Produtividade para o desenvolvedor

Em projetos de integração não reinvente a roda.

Considere utilizar o Apache Camel!


                                      Globalcode	
  –	
  Open4education
Perguntas & Respostas




                        Globalcode	
  –	
  Open4education
Agradecimentos




                 Globalcode	
  –	
  Open4education
Contatos para consultoria
e treinamento
            Adriano Tavares
              adriano.tavares@arkhi.com.br
              @adrianotavares
              adrianotavares.com
              linkedin.com/in/adrianotavares


            Alessandro Kieras
              alessandro.kieras@arkhi.com.br
              @kierasbr
              kieras.com.br
              linkedin.com/in/kieras

                                      Globalcode	
  –	
  Open4education

Mais conteúdo relacionado

Mais procurados

Overview of AWS identity services Enabling and securing your cloud journey - ...
Overview of AWS identity services Enabling and securing your cloud journey - ...Overview of AWS identity services Enabling and securing your cloud journey - ...
Overview of AWS identity services Enabling and securing your cloud journey - ...Amazon Web Services
 
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cBruno Borges
 
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServeAWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServeAmazon Web Services LATAM
 
Write Paper - Graphon go-global for remote app on oracle public cloud v4
Write Paper  - Graphon go-global for remote app on oracle public cloud v4Write Paper  - Graphon go-global for remote app on oracle public cloud v4
Write Paper - Graphon go-global for remote app on oracle public cloud v4Weligton Pinto
 
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAmazon Web Services LATAM
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application ServerFabricio Carvalho
 
Webinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptx
Webinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptxWebinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptx
Webinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptxAmazon Web Services LATAM
 
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
Criando Aplicações Serverless -  ARC302 - Sao Paulo SummitCriando Aplicações Serverless -  ARC302 - Sao Paulo Summit
Criando Aplicações Serverless - ARC302 - Sao Paulo SummitAmazon Web Services
 
Levando Serverless para o Edge - ARC301 - Sao Paulo Summit
Levando Serverless para o Edge -  ARC301 - Sao Paulo SummitLevando Serverless para o Edge -  ARC301 - Sao Paulo Summit
Levando Serverless para o Edge - ARC301 - Sao Paulo SummitAmazon Web Services
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosFábio Rosato
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaMarcelo Mrack
 
Soluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMwareSoluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMwareOracle
 
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdfAWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdfAmazon Web Services LATAM
 

Mais procurados (20)

Overview of AWS identity services Enabling and securing your cloud journey - ...
Overview of AWS identity services Enabling and securing your cloud journey - ...Overview of AWS identity services Enabling and securing your cloud journey - ...
Overview of AWS identity services Enabling and securing your cloud journey - ...
 
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12cJava EE no ambiente corporativo: primeiros passos WebLogic 12c
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
 
IBM WebSphere Portal
IBM WebSphere PortalIBM WebSphere Portal
IBM WebSphere Portal
 
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServeAWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
 
Write Paper - Graphon go-global for remote app on oracle public cloud v4
Write Paper  - Graphon go-global for remote app on oracle public cloud v4Write Paper  - Graphon go-global for remote app on oracle public cloud v4
Write Paper - Graphon go-global for remote app on oracle public cloud v4
 
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
 
Webinar Streaming Ao Vivo & Video On Demand
Webinar Streaming Ao Vivo & Video On DemandWebinar Streaming Ao Vivo & Video On Demand
Webinar Streaming Ao Vivo & Video On Demand
 
Segurança na AWS
Segurança na AWSSegurança na AWS
Segurança na AWS
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
Webinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptx
Webinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptxWebinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptx
Webinar - An Introduction to Building and Optimizing a Hybrid Cloud on AWS.pptx
 
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
Criando Aplicações Serverless -  ARC302 - Sao Paulo SummitCriando Aplicações Serverless -  ARC302 - Sao Paulo Summit
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
 
Levando Serverless para o Edge - ARC301 - Sao Paulo Summit
Levando Serverless para o Edge -  ARC301 - Sao Paulo SummitLevando Serverless para o Edge -  ARC301 - Sao Paulo Summit
Levando Serverless para o Edge - ARC301 - Sao Paulo Summit
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travados
 
Conceitos de SOA
Conceitos de SOAConceitos de SOA
Conceitos de SOA
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer Tecnologia
 
AWS Segurança e Conformidade
AWS Segurança e ConformidadeAWS Segurança e Conformidade
AWS Segurança e Conformidade
 
VMware on AWS
VMware on AWSVMware on AWS
VMware on AWS
 
Webinar: Containers
Webinar: ContainersWebinar: Containers
Webinar: Containers
 
Soluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMwareSoluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMware
 
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdfAWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
 

Destaque

Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012
Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012
Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012Kai Wähner
 
Redes Sociais ensinam Apache Camel e EIPs
Redes Sociais ensinam Apache Camel e EIPsRedes Sociais ensinam Apache Camel e EIPs
Redes Sociais ensinam Apache Camel e EIPsBruno Borges
 
Heavy reading-order-management-wp-2012
Heavy reading-order-management-wp-2012Heavy reading-order-management-wp-2012
Heavy reading-order-management-wp-2012Khellil Khellil
 
Integração de Sistemas utilizando Apache Camel
Integração de Sistemas utilizando Apache CamelIntegração de Sistemas utilizando Apache Camel
Integração de Sistemas utilizando Apache CamelPedro Oliveira
 
Best Practices for Implementing a Product Information Management (PIM) System
Best Practices for Implementing a Product Information Management (PIM) SystemBest Practices for Implementing a Product Information Management (PIM) System
Best Practices for Implementing a Product Information Management (PIM) SystemNuxeo
 
Order management, provisioning and activation
Order management, provisioning and activationOrder management, provisioning and activation
Order management, provisioning and activationVijayIndra Shekhawat
 
TOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem Overview
TOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem OverviewTOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem Overview
TOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem OverviewOpenTOSCA
 
E-commerce Trends from 2015 to 2016 by Divante
E-commerce Trends from 2015 to 2016 by DivanteE-commerce Trends from 2015 to 2016 by Divante
E-commerce Trends from 2015 to 2016 by DivanteDivante
 
Integrated Order Management
Integrated Order ManagementIntegrated Order Management
Integrated Order Managementdidemtopuz
 
Order Management Overview
Order Management OverviewOrder Management Overview
Order Management OverviewRobert Ransom
 

Destaque (14)

[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real[Q con] apache camel e eip na vida real
[Q con] apache camel e eip na vida real
 
JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1
 
Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012
Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012
Systems Integration in the Cloud Era with Apache Camel @ ApacheCon Europe 2012
 
Redes Sociais ensinam Apache Camel e EIPs
Redes Sociais ensinam Apache Camel e EIPsRedes Sociais ensinam Apache Camel e EIPs
Redes Sociais ensinam Apache Camel e EIPs
 
Heavy reading-order-management-wp-2012
Heavy reading-order-management-wp-2012Heavy reading-order-management-wp-2012
Heavy reading-order-management-wp-2012
 
Integração de Sistemas utilizando Apache Camel
Integração de Sistemas utilizando Apache CamelIntegração de Sistemas utilizando Apache Camel
Integração de Sistemas utilizando Apache Camel
 
Best Practices for Implementing a Product Information Management (PIM) System
Best Practices for Implementing a Product Information Management (PIM) SystemBest Practices for Implementing a Product Information Management (PIM) System
Best Practices for Implementing a Product Information Management (PIM) System
 
Product bundling
Product bundlingProduct bundling
Product bundling
 
E commerce introduction
E commerce introductionE commerce introduction
E commerce introduction
 
Order management, provisioning and activation
Order management, provisioning and activationOrder management, provisioning and activation
Order management, provisioning and activation
 
TOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem Overview
TOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem OverviewTOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem Overview
TOSCA and OpenTOSCA: TOSCA Introduction and OpenTOSCA Ecosystem Overview
 
E-commerce Trends from 2015 to 2016 by Divante
E-commerce Trends from 2015 to 2016 by DivanteE-commerce Trends from 2015 to 2016 by Divante
E-commerce Trends from 2015 to 2016 by Divante
 
Integrated Order Management
Integrated Order ManagementIntegrated Order Management
Integrated Order Management
 
Order Management Overview
Order Management OverviewOrder Management Overview
Order Management Overview
 

Semelhante a Produtividade em integração de aplicações com apache camel tdc2012-são paulo-v1.3

ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2Eric Lemes
 
Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...
Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...
Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...Ricardo Ferreira
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5Helder da Rocha
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Ricardo Ferreira
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAwolkartt_18
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Jeison Barros
 
Arquitetura Funcional em Microservices
Arquitetura Funcional em MicroservicesArquitetura Funcional em Microservices
Arquitetura Funcional em MicroservicesNubank
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Javaarmeniocardoso
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 

Semelhante a Produtividade em integração de aplicações com apache camel tdc2012-são paulo-v1.3 (20)

Sistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOASistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOA
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
 
Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...
Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...
Alta Performance e Escalabilidade para Java / Java EE e Aplicativos Oracle us...
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNA
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1
 
Arquitetura Funcional em Microservices
Arquitetura Funcional em MicroservicesArquitetura Funcional em Microservices
Arquitetura Funcional em Microservices
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Java
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
O Elefante e a Mula
O Elefante e a MulaO Elefante e a Mula
O Elefante e a Mula
 
MPLS
MPLSMPLS
MPLS
 

Mais de Adriano Tavares

Palestra Transformação Ágil - CBGPL 2019
Palestra Transformação Ágil - CBGPL 2019Palestra Transformação Ágil - CBGPL 2019
Palestra Transformação Ágil - CBGPL 2019Adriano Tavares
 
TDC2018 - Adriano Tavares - Design Thinking para arquitetos de software
TDC2018 - Adriano Tavares - Design Thinking para arquitetos de softwareTDC2018 - Adriano Tavares - Design Thinking para arquitetos de software
TDC2018 - Adriano Tavares - Design Thinking para arquitetos de softwareAdriano Tavares
 
Transformação ágil em uma grande empresa, um post-it por vez!
Transformação ágil em uma grande empresa, um post-it por vez! Transformação ágil em uma grande empresa, um post-it por vez!
Transformação ágil em uma grande empresa, um post-it por vez! Adriano Tavares
 
DevOps, por onde começar
DevOps, por onde começarDevOps, por onde começar
DevOps, por onde começarAdriano Tavares
 
Disciplined Agile Delivery - indo além do Scrum
Disciplined Agile Delivery - indo além do ScrumDisciplined Agile Delivery - indo além do Scrum
Disciplined Agile Delivery - indo além do ScrumAdriano Tavares
 
Arquitetura Ágil, uma abordagem disciplinada
Arquitetura Ágil, uma abordagem disciplinadaArquitetura Ágil, uma abordagem disciplinada
Arquitetura Ágil, uma abordagem disciplinadaAdriano Tavares
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeAdriano Tavares
 
Modelagem de dados e objetos
Modelagem de dados e objetosModelagem de dados e objetos
Modelagem de dados e objetosAdriano Tavares
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 

Mais de Adriano Tavares (13)

Palestra Transformação Ágil - CBGPL 2019
Palestra Transformação Ágil - CBGPL 2019Palestra Transformação Ágil - CBGPL 2019
Palestra Transformação Ágil - CBGPL 2019
 
TDC2018 - Adriano Tavares - Design Thinking para arquitetos de software
TDC2018 - Adriano Tavares - Design Thinking para arquitetos de softwareTDC2018 - Adriano Tavares - Design Thinking para arquitetos de software
TDC2018 - Adriano Tavares - Design Thinking para arquitetos de software
 
Transformação ágil em uma grande empresa, um post-it por vez!
Transformação ágil em uma grande empresa, um post-it por vez! Transformação ágil em uma grande empresa, um post-it por vez!
Transformação ágil em uma grande empresa, um post-it por vez!
 
DevOps, por onde começar
DevOps, por onde começarDevOps, por onde começar
DevOps, por onde começar
 
Disciplined Agile Delivery - indo além do Scrum
Disciplined Agile Delivery - indo além do ScrumDisciplined Agile Delivery - indo além do Scrum
Disciplined Agile Delivery - indo além do Scrum
 
Arquitetura Ágil, uma abordagem disciplinada
Arquitetura Ágil, uma abordagem disciplinadaArquitetura Ágil, uma abordagem disciplinada
Arquitetura Ágil, uma abordagem disciplinada
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
 
Pangea 21-07-2009
Pangea 21-07-2009Pangea 21-07-2009
Pangea 21-07-2009
 
JPA - MGJUG
JPA - MGJUGJPA - MGJUG
JPA - MGJUG
 
Modelagem de dados e objetos
Modelagem de dados e objetosModelagem de dados e objetos
Modelagem de dados e objetos
 
Gestao agil de projetos
Gestao agil de projetosGestao agil de projetos
Gestao agil de projetos
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 

Produtividade em integração de aplicações com apache camel tdc2012-são paulo-v1.3

  • 1. Produtividade em Integração de Aplicações com Apache Camel Globalcode  –  Open4education
  • 2. Para ganhar um refcardz The Top Twelve Integration Patterns for Apache Camel !   Envie um Twitter contendo: #TDC2012 #ApacheCamel @pangeanet Quero ganhar um refcardz! Globalcode  –  Open4education
  • 3. Meta “Apresentar a DSL Java do Apache Camel para tornar as integrações mais simples e produtivas para os desenvolvedores.” Globalcode  –  Open4education
  • 4. Agenda !   Conceitos Fundamentais !   Arquitetura do Apache Camel !   Desenho & Implementação !   Demo !   Conclusão !   Perguntas & Respostas Globalcode  –  Open4education
  • 5. O que são DSL’s*? DSL’s são linguagens de programação com expressividade limitada e que foram desenhadas para tratar problemas de um domínio específico. Linguagem Domínio Específico CSS Definição de estilo e layout de páginas web SQL Consultas em bases de dados relacionais XUL Definição de interfaces com o usuário Expressão Regular Casamento de padrões em strings Ant Automatização de build’s JPA Criteria Consultas de entidades OO * Domain Specific Languages. Globalcode  –  Open4education
  • 6. A DSL do Apache Camel Domínio: ! Integração de aplicações utilizando padrões do livro Enterprise Integration Patterns. “Apache Camel é um framework open-source flexível baseado em EIPs.” Camel implements EIPs Globalcode  –  Open4education
  • 7. Benefícios de uma boa DSL “Produtividade” 1.  O código fica mais fácil de compreender; 2.  O programa fica mais simples de modificar; 3.  Melhora a produtividade do desenvolvedor; 4.  É facilmente entendida por especialistas do domínio. Globalcode  –  Open4education
  • 8. Por que usar o Camel? “Não reinventar a roda” ! Ele faz o trabalho pesado enquanto você foca no problema de negócio. Globalcode  –  Open4education
  • 9. Números de um caso real !   Implementação do padrão Aggregator !   Sem usar o Apache Camel !  ~2711 LOC, ~25 Classes !   Usando o Apache Camel e sua DSL Java ~30x !  ~75 LOC, ~5 Classes Globalcode  –  Open4education
  • 10. Agenda !   Conceitos Fundamentais !   Arquitetura do Apache Camel !   Desenho & Implementação !   Demo !   Conclusão !   Perguntas & Respostas Globalcode  –  Open4education
  • 11. Roteamento com a DSL Java <<Endpoint A>> <<Filter>> <<Endpoint B>> <<Processor>> from(A).filter(isValid).to(B); Globalcode  –  Open4education
  • 12. Endpoint URI "schema:contextpath?option=value" "file:c:dir?delay=5000" "jms:aQueue?competingConsumers=10" Globalcode  –  Open4education
  • 13. JMS com a DSL Java <<Channel>> <<Filter>> <<Endpoint A>> <<Endpoint B>> from(”file:c:dir”).to(”jms:aQueue”); from(”jms:aQueue”).filter(isValid).to(B); Globalcode  –  Open4education
  • 14. Arquitetura do Camel a 10 mil pés Engine de Camel Context Roteamento Route 1 Processadores A DSL liga endpoints e Route 2 É onde o processadores processamento da para criar Route 3 lógica de rotas. integração acontece. ... ... A DSL é usada para implementar File JMS ... FTP os padrões de integração. Componentes A DSL fornecem uma interface uniforme para criação de endpoints. Globalcode  –  Open4education
  • 15. Arquitetura modular e plugável !   Mais de 50 EIPs implementados http://camel.apache.org/enterprise_integration_patterns.html !   Mais de 80 Components disponíveis (activemq, jms, bean, cxf, file, ftp, jdbc, ibatis, jetty, mina, netty, timer, xslt, rss, atom, twitter, etc...) http://camel.apache.org/components.html !   Diversos formatos de dados (csv, serialization, zip, hl7, soap, jaxb, etc...) http://camel.apache.org/data-format.html !   Diversas linguagens suportadas (EL, Simple, XQuery, Xpath, JavaScript, Ruby, Python, PHP, etc...) http://camel.apache.org/languages.html Globalcode  –  Open4education
  • 16. Agenda !   Conceitos Fundamentais !   Arquitetura do Apache Camel !   Desenho & Implementação !   Demo !   Conclusão !   Perguntas & Respostas Globalcode  –  Open4education
  • 17. Contexto da Aplicação Logística de Entrega Site E-Commerce Camel E-Commerce Controle de Estoque Globalcode  –  Open4education
  • 18. Requisitos de Integração !   Buscar pedidos em arquivos XML do site em um servidor FTP; Endpoint FTP !   Trabalhar com modelo POJO; Translator !   Processar os tipos de itens por processadores especializados; Splitter e Content Enricher !   Entregar o pedido completo; Aggregator !   Disponibilizar arquivos TXT com dados dos pedidos para entrega; Endpoint File !   Gravar dados dos pedidos em banco de dados para controle de estoque. Endpoint JPA Globalcode  –  Open4education
  • 19. <<Message>> <<Message>> Pedido XML Pedido POJO Site E-Commerce <<Endpoint>> Pedido FTP <<Translator>> Pedido XML para POJO <<Channel>> Pedidos Desenho da Solução com EIP’s <<Content Enricher>> Produtos Artesanais <<Channel>> <<Splitter>> <<Channel>> <<Content Based Router>> Itens Pedido em Itens Itens Tipo do Item Processados <<Content Enricher>> Produtos Industrializados <<Channel>> <<Translator>> Logística de Pedidos para <<Endpoint>> Pedido POJO para Entrega Entrega Arquivo TXT TXT com Freemarker <<Aggregator>> <<Recipient List>> Itens de Pedidos Pedido Pronto Multicast <<Channel>> <<Endpoint>> Controle de Pedidos para Banco de Dados Estoque Baixa no Estoque Endpoint Globalcode  –  Open4education
  • 20. <<Message>> <<Message>> Pedido XML Pedido POJO Site E-Commerce <<Endpoint>> Pedido FTP <<Translator>> Pedido XML para POJO <<Channel>> Pedidos Desenho da Solução com EIP’s <<Content Enricher>> Produtos Artesanais <<Channel>> <<Splitter>> <<Channel>> <<Content Based Router>> Itens Pedido em Itens Itens Tipo do Item Processados <<Content Enricher>> Produtos Industrializados <<Channel>> <<Translator>> Logística de Pedidos para <<Endpoint>> Pedido POJO para Entrega Entrega Arquivo TXT TXT com Freemarker <<Aggregator>> <<Recipient List>> Itens de Pedidos Pedido Pronto Multicast <<Channel>> <<Endpoint>> Controle de Pedidos para Banco de Dados Estoque Baixa no Estoque Endpoint Globalcode  –  Open4education
  • 21. ROTA 1: Endpoint FTP + Translator <<Message>> <<Message>> Pedido XML Pedido POJO <<Endpoint>> <<Translator>> <<Channel>> Site E-Commerce Pedido FTP Pedido XML Pedidos para POJO public class BuscaPedidoXmlFtpRouteBuilder extends RouteBuilder { @Override public void configure() { from("ftp:localhost:2121/pedidos? username=xxxxxxx&password=xxxxxxxxxx") .convertBodyTo(Pedido.class) .to("jms:pedidos"); } } Globalcode  –  Open4education
  • 22. Arquivo XML de Pedido <pedido cliente="11111111111"> <itens> <item> <nome>Camisa customizada</nome> <quantidade>1</quantidade> <tipo>ARTESANAL</tipo> </item> <item> <nome>Camisa branca</nome> <quantidade>3</quantidade> <tipo>INDUSTRIALIZADO</tipo> </item> </itens> </pedido> Globalcode  –  Open4education
  • 23. Pedido com anotações JAXB e JPA @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) @Entity public class Pedido implements Serializable { @XmlAttribute private String cliente; @XmlElementWrapper @XmlElement(name="item") @OneToMany(cascade = CascadeType.ALL) private List<Item> itens; … } Globalcode  –  Open4education
  • 24. ROTA 2: Splitter <<Channel>> <<Splitter>> <<Channel>> Pedidos Pedido em Itens Itens from("jms:pedidos") .split().method(PedidoSplitter.class) .setHeader("PEDIDO_CORRELATION_ID", property("CamelCorrelationId")) .setHeader("PEDIDO_SIZE", property("CamelSplitSize")) .to("jms:itens"); Globalcode  –  Open4education
  • 25. ROTA 3: Content Based Router <<Content Enricher>> Produtos Artesanais <<Channel>> <<Channel>> <<Content Based Router>> Itens Itens Tipo do Item Processados <<Content Enricher>> Produtos from("jms:itens") Industrializados .choice() .when(simple("${body.itens[0].tipo} == 'ARTESANAL'")) .bean(ProcessadorArtesanal.class) .when(simple("${body.itens[0].tipo} == 'INDUSTRIALIZADO'")) .bean(ProcessadorIndustrializado.class) .end() .to("jms:itensProcessados"); Globalcode  –  Open4education
  • 26. Um Processador de Pedidos public class ProcessadorArtesanal { public Pedido preparar(Pedido pedido) { Item item = pedido.getItens().get(0); item.preparar(); // simulando tempo de processamento Thread.sleep(1000); return pedido; } Globalcode  –  Open4education
  • 27. ROTA 4: Aggregator + “Multicast” <<Channel>> Pedidos para Entrega <<Channel>> <<Aggregator>> <<Recipient List>> Itens Itens de Pedidos Pedido Pronto Processados Multicast <<Channel>> Pedidos para Baixa no Estoque from("jms:itensProcessados") .aggregate(header("PEDIDO_CORRELATION_ID"), new PedidoAggregationStrategy()) .completionSize(header("PEDIDO_SIZE")) .multicast().parallelProcessing() .to("jms:pedidosProntosEntrega", "jms:pedidosProntosBaixaEstoque"); Globalcode  –  Open4education
  • 28. ROTA 5: Endpoints Freemarker e File <<Channel>> <<Translator>> Logística de Pedidos para <<Endpoint>> Pedido POJO para Entrega Entrega Arquivo TXT TXT com Freemarker from("jms:pedidosProntosEntrega") .to("freemarker:ecommerce/pedido_ecommerce.ftl") .to("file:ecommerce/entregas/? fileName=entrega- $simple{date:now:yyyyMMddHHmmssSSS}.txt"); Globalcode  –  Open4education
  • 29. ROTA 6: Endpoint JPA <<Channel>> <<Endpoint>> Controle de Pedidos para Banco de Dados Estoque Baixa no Estoque Endpoint from("jms:pedidosProntosBaixaEstoque") .to("jpa:tdc2012.camel.ecommerce.domain.Pedido"); Globalcode  –  Open4education
  • 30. Demo !   - Execução da aplicação; !   - Subindo o contexto do Apache Camel; !   - Escalabilidade com o Competing Consumers. Globalcode  –  Open4education
  • 31. Agenda !   Conceitos Fundamentais !   Arquitetura do Apache Camel !   Desenho & Implementação !   Demo !   Conclusão !   Perguntas & Respostas Globalcode  –  Open4education
  • 32. Conclusão A DSL Java do Apache Camel confere: ! Vocabulário comum baseado em EIPs; ! Produtividade para o desenvolvedor Em projetos de integração não reinvente a roda. Considere utilizar o Apache Camel! Globalcode  –  Open4education
  • 33. Perguntas & Respostas Globalcode  –  Open4education
  • 34. Agradecimentos Globalcode  –  Open4education
  • 35. Contatos para consultoria e treinamento Adriano Tavares adriano.tavares@arkhi.com.br @adrianotavares adrianotavares.com linkedin.com/in/adrianotavares Alessandro Kieras alessandro.kieras@arkhi.com.br @kierasbr kieras.com.br linkedin.com/in/kieras Globalcode  –  Open4education