O documento discute a integração de sistemas usando o framework Apache Camel. Apresenta introduções à integração de sistemas e ao Apache Camel, casos de uso no projeto Rotterdam e na empresa Jacareí, e quem já está usando o Apache Camel.
2. Introdução à Integração de Sistemas
Projeto Rotterdam
Introdução ao Apache Camel
Apache Camel na Prática
Cases Rotterdam
Quem já está usando
Agenda
2
6. Introdução à Integração de Sistemas
6
Soluções de Integração
1. Banco de Dados Compartilhado
Muito comum no SAP – inclusive no UOL
Asynch
2. Transferência de Arquivos
FTP, NFS
EDI, TXT posicional, XML
Instituições bancárias/Adquirentes
Asynch
7. Introdução à Integração de Sistemas
7
Soluções de Integração
3. RPC – Remote Procedure Calls
RMI
JNI
WS
Synch
4. Messageria
JMS
Asynch
8. Introdução à Integração de Sistemas
8
Enterprise Application Integration (EAI)
Interoperabilidade
Integração de dados
Desacoplamento, estabilidade, escalabilidade
Tolerância a falhas
Eliminação de gargalos
13. Projeto Rotterdam – Fase I
13
DEPOIS
ANTES
(mesma interface de integração com o cliente)
14. Projeto Rotterdam – Fase I
14
Desafio Adicional: diferentes tecnologias de
publicação de Web Services
utilizadas pelo BPag
15. Projeto Rotterdam – Fase I
15
Requisitos Funcionais
PCI-compliance
Roteamento de requisições HTTP
Transformação de requisições HTTP
Transparente para o usuário (manter interfaces de entrada)
Fail-over de transações
Suporte a múltiplas tecnologias de publicação de WebServices (Axis, CXF,
Spring-WS, etc)
Integração com Jacareí e DF
Requisitos Não-Funcionais
Suporte a carga (pelo menos 3 transações/segundo)
Mínimo esforço de mudança possível
17. 17
Concise
Application
Message
Exchange
Language
Introdução ao Apache Camel
O que é?
Framework Open Source de Integração Baseado em EAI Patterns
API Única Independente do Componente (CXF, ActiveMQ, MINA)
Suporte a Vários Tipos de Transporte (HTTP, JMS, NIO)
Por que optamos pelo uso do Camel?
Java Based Fluent API (Menos Config. XML)
Integração com Spring sem Remendos
Facilidade para Lidar com Payloads Diferentes
Suporte a Testes Unitários
18. Introdução ao Apache Camel
18
Figure 1: High level view of Camel's architecture (from Camel in Action).
Arquitetura do Framework
19. 19
A Camel can travel for
great distances without
water; similarly a Camel
does not require bucket
loads of XML as you can
use a pure Java DSL
Apache Camel na Prática
Routes
RouteBuilder - Classes utilizada para criação de rotas utilizando a DSL
SpringRouteBuilder - Integração com Spring
Invocadas pelo CamelContext durante o load da aplicação
20. Apache Camel na Prática
20
Endpoints
Análogos ao padrão Message Endpoint
Podem ser Producer ou Consumer
Normalmente criados pelos componentes do Camel
Referenciados com Camel DSL via URIs
21. 21
Roteamento e Mediação usando Apache Camel
CamelContext
Contém as configurações de Rotas e Definição de Endpoints
Encapsula o Registry (uso de Spring facultativo )
Mesmo contexto do Spring pode ter diversos CamelContexts
O “context-scan” do Camel funciona como o “component-scan” do Spring
22. Componentes Suportados?
.
“A Camel can carry 4 times the load of other beasts of burden”
Apache Camel na Prática
22
http://camel.apache.org/components.html
24. Case #1: Transformação de requisições HTTP
(Rotterdam)
24
Utilização do EAI Pattern “Message Transformer” – Content Enricher
(egw-proxy-pci-in)
25. Case #2: Roteamento de requisições HTTP
(Rotterdam)
25
Emaranhado de integrações HTTP
Como garantir fail-over em todo o fluxo?
26. Case #2: Roteamento de requisições HTTP
(Rotterdam)
26
Utilização do EAI Pattern “Message Router”
(egw-router)
27. Quem já está usando – Jacareí
Consumo de arquivo
27
• Processamento de arquivo EDI
• Cada registro do arquivo é transformado em uma mensagem JMS
28. Quem já está usando – Jacareí
Job schedulado
28
• Job roda 2x por dia
• Diversos registros do banco de dados são transformados em um
arquivo de remessa, que é transferido para a instituição financeira