Este curso explora os 65 padrões de integração de sistemas do catálogo EIP: Enterprise Integration Patterns: designing, building and deploying messaging solutions, de Hohpe/Woolf (2003). O catálogo é uma referência clássica de padrões, boas práticas e estratégias para integração de sistemas, e que é adotado como base dos principais produtos de integração do mercado, como o Apache Camel e o Mule ESB. Este curso apresenta todos os 65 padrões, e explora em maiores detalhes os 20 mais importantes, com demonstrações usando aplicações em Java JMS, Web Services SOAP JAX-WS e Apache Camel. Ao final de cada grupo de padrões são apresentados testes para revisão dos conceitos apresentados, e são propostos exercícios simples em Java que usam os padrões apresentados.
Os padrões são agrupados e apresentados em ordem crescente de complexidade e importância.
Ao final deste curso o aluno terá condições de:
- identificar os principais padrões de integração, e saber em que grupo buscar uma solução para um determinado problema de integração
- dentro de um dado grupo de padrões, selecionar quais poderiam ser usados como solução de um problema de integração
- saber onde procurar no catálogo EIP, estratégias e detalhes de implementação de um dado padrão de integração
- usar de forma eficiente uma ferramenta de integração de sistemas como o Mule ESB ou Apache Camel, que implementam os padrões EIP, para solucionar um problema de integração
- analisar um sistema que necessita de integração e propor uma solução baseada em padrões de integração
- Introdução
- Estilos de integração
- Preparação do ambiente
- Mensageria
- Comunicação
- Qualidade do serviço
- Terminais
- Requisição e resposta
- Arquiteturas e processamento de dados
- Monitoração
- Transformação
- Roteamento
- Processamento distribuído
- Introdução
- Introdução a padrões de integração de sistemas
- Padrões de design
- Necessidade de integração
- Integração vs. Sistemas Distribuídos
- Comunicação síncrona e assíncrona
- Tecnologias de integração em Java: JMS, EJB, JAX-WS, JAX-RS
- Formatos de dados: XML, JSON
- Estilos de Integração
- Padrão 1: Transferência de arquivos
- Exemplos com java.io e java.net
- Padrão 2: Banco de dados compartilhado
- Exemplos com java.sql, javax.persistence
- Padrão 3: RPC
- Exemplos com java.rmi, javax.rmi e javax.ejb.
- Padrão 4: Mensageria
- Exemplos com java.nio
- Java Message Service (javax.jms)
- Camel, Mule e Spring Integration
- Preparação do ambiente
- Ferramentas para o Eclipse: STS e JBoss Tools
- Instalação e configuração do ActiveMQ
- Configuração do Maven
- Configuração do Camel
- Configuração do Spring Integration
- Mensageria
- Padrão 5: Mensagem
- Padrão 6: Canal
- Padrão 7: Terminal
- Comunicação
- Padrão 8: Canal Ponto-a-Ponto
- Padrão 9: Consumidor de Sondagem (Polling Consumer)
- Padrão 10: Consumidores Concorrentes (Competing Consumers)
- Padrão 11: Canal de Difusão (Publish-Subscribe Channel)
- Padrão 12: Consumidor Guiado por Evento (Event-driven Consumer)
- Padrão 13: Mensagem-evento
- Padrão 14: Despachante de Mensagens
- Padrão 15: Consumidor Seletivo
- Qualidade do serviço
- Padrão 16: Prazo de Validade
- Padrão 17: Dead-Letter Queue (DLQ)
- Padrão 18: Escuta (Wiretap) e logging
- Padrão 19: Entrega Garantida
- Padrão 20: Assinante Durável
- Terminais
- Padrão 21: Adaptador de Canal
- Padrão 22: Ponte de Mensageria
- Padrão 23: Gateway
- Padrão 24: Ativador de Serviço
- Padrão 25: Mapeador
- Requisição e resposta
- Padrão 26: Endereço de Resposta
- Padrão 27: Correlation ID
- Padrão 28: Mensagem-comando
- Padrão 29: Mensagem-documento
- Padrão 30: Request-Teply
- Padrão 31: Cliente Transacional
- Arquiteturas e processamento de dados
- Padrão 32: Dutos e Filtros
- Padrão 33: Message Bus
- Padrão 34: Message Broker
- Java 8 streams (java.util.stream)*
- Monitoração
- Padrão 35: Mensagem-Teste
- Padrão 36: Purificador de Canal (Purger)
- Padrão 37: Proxy
- Padrão 38: Histórico (Message History)
- Padrão 39: Repositório (Message Store)
- Transformação
- Padrão 40: Tradutor
- Padrão 41: Envelope
- Padrão 42: Filtro de Conteúdo
- Padrão 43: Enriquecedor de Conteúdo (Content Enricher)
- Padrão 44: Recibo (Claim Check)
- Padrão 45: Canonical Data Model
- Transformação de XML (DOM, SAX, XPath e XSLT)*
- Transformações Map-Reduce*
- Roteamento
- Padrão 46: Roteador
- Padrão 47: Filtro de Conteúdo (Content Filter)
- Padrão 48: Indicador de Formato
- Padrão 49: Content-Based Router (CBR)
- Padrão 50: Datatype Channel
- Padrão 51: Invalid Message Channel
- Padrão 52: Normalizer
- Padrão 53: Roteador Dinâmico
- Padrão 54: Desvio (Detour)
- Padrão 55: Lista de Receptores (Recipient List)
- Padrão 56: Lista de Circulação (Routing Slip)
- Padrão 57: Barramento de Controle (Control Bus)
- Padrão 58: Process Manager
- Processamento distribuído
- Padrão 59: Divisor (Splitter)
- Padrão 60: Agregador
- Padrão 61: Sequencia de Mensagens
- Padrão 62: Resequenciador
- Padrão 63: Receptor Idempotente
- Padrão 64: Processador de Mensagens Compostas
- Padrão 65: Espalha-Recolhe (Scatter-Gather)