SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Facilitando implementação de
mensageria em aplicações
Java
Agenda
✘ Problema
✘ Contexto
✘ JMS
✘ Implementação JMS
✘ Spring
✘ Implementação Spring
Desde 2008 em Tecnologia
Des. Java 2014
Arquitetura de Soluções
Engenharia de Software
Praia > SP
Devs JavaGirl
SouJava
Paula Santana
Por quê?
Assunto mal compreendido em TI
Facilita a compreensão de abordagens como EDA
Mostrar novas implementações através do Spring
Comunicação
A B
Resolve
Mensageria Problema
https://www.appcentrica.com/wp-content/uploads/2016/11/Microservices-Architecture-1.png
8
Mensageria
✘ Permite desacoplar aplicações
✘ Flexibilidade e agilidade
✘ Facilidade em acrescentar novos consumidores
✘ Operações Assíncronas
✘ Arquitetura com escalabilidade
✘ Sistemas distribuídos
Broker
/ MOM
Produtor Consumidor
estrutura
CANAL
Evento
Mensagem
Comando
Enterprise
Integration
Patterns
Canais de
mensagem
Construção de
Mensagem
Tubos e filtros
Roteamento
de Mensagem
Transformação
de mensagem
Endpoint de
Mensagens
História
Java Message Service
Tib
IBM
MQseries
1983 1993
MSMQ
1997
ActiveMQ
2004
JMS 1.1
20021985
Conceito JMS 2.0
2013
PROBLEMA QUE O JMS RESOLVEU
Aplicação
SOLUÇÃO A
SOLUÇÃO B
API PARA
FALAR COM A
API PARA
FALAR COM B
“A especificação Java Message Service (JMS) foi criada
justamente para definir um conjunto de
funcionalidades comuns à maioria dos produtos de
mensageria e uma API padronizada que permitisse a
aplicações Java utilizarem os serviços de middlewares
orientados a mensagens, compatíveis com a API, de
uma maneira uniforme, para a criação, envio e
recebimento de mensagens.
JMS é um protocolo?
JMS
Especificação
JMS
JMS API
PROVIDER JMS
Aplicação
PROVIDER JMS
JMS API
Implementa
Implementa
Utiliza
Utiliza
Modelos de
Entrega
Modelos de Entrega - Fila (ponto a ponto)
Pedido Financeiro
BROKER/
MOM
FILA
Modelos de Entrega - Tópico (publish/subscribe)
Financeiro
Transporte
BROKER/
MOM
TÓPICOPedido
Arquitetura JMS
JMS Cliente
JNDI
JMS
Provider
Lookup
Connection
“Os produtos compatíveis com a API JMS são
chamados de provedores JMS (ou JMS Providers),
como WebSphere MQ, SonicMQ, FioranoMQ ,
ActiveMQ, HornetQ, Oracle AQ, EMS , OpenJMS e
RabbitMQ
“JNDI é uma API utilizada em aplicações que acessam
recursos externos, ela permite obter esses recursos
através do nome. Ela especifica a interface de
serviço SPI e esse mecanismo permite que o suporte
de vários serviços de diretório, como : LDAP, DNS,
NIS, RMI, CORBA, entre outros.
Implementação 1.1
Connection
Connection
Factory
Session
Message
Producer
Message
Consumer
Cria
Cria
CriaCria
Message
Cria
Destino
Envia Recebe
public class ShowMeCode {
public static void main(String[] args) {
System.out.println("Show me the code");
}
}
Implementação 2.0
JMSContext
Connection
Factory
JMSProducer JMSConsumer
Cria
Cria
Cria
Message
Cria
Destino
Envia Recebe
Integração com
CDI
public class ProdutorFila {
@Resource(lookup = "jms/queue")
private Queue queue;
@Inject
@JMSConnectionFactory("jms/connectionFactory")
private JMSContext jmsContext;
public void sendMessage(String message) {
jmsContext.createProducer().send(queue, message);
}
}
Spring
Cloud
Stream
Spring
Integration Spring
Integration
Spring for
RabbitMq
Spring for
ActiveMq
Spring for
ActiveMq
“O Spring Framework permitiu uma maneira
simples e fácil de enviar mensagens,
implementando um padrão de design de modelo
que pode ser usado com qualquer sistema de
mensagens. Ele suporta a API JMS com o
JmsTemplate, o AMQP com o RabbitTemplate, o
STOMP e o sistema interno de mensagens com
eventos e ouvintes.
Implementação
Spring
JMSTemplateJmsListener
Destino
EnviaRecebe assíncrono Recebe
Referência
Alura ActiveMq
Conteúdo legal
Projetos
Nutella Raiz
Obrigada!
Dúvidas?
@psanrosa13
paula-macedo-santana-dev
@paulasantana

Mais conteúdo relacionado

Mais procurados

Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoJessyka Lage
 
Relative pronouns 8ª série - 4º bimestre
Relative pronouns   8ª série - 4º bimestreRelative pronouns   8ª série - 4º bimestre
Relative pronouns 8ª série - 4º bimestreISJ
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Desenvolvimento Web com Java Script Full Stack
Desenvolvimento Web com Java Script Full StackDesenvolvimento Web com Java Script Full Stack
Desenvolvimento Web com Java Script Full StackErick Petrucelli
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Leinylson Fontinele
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 

Mais procurados (20)

Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: Introdução
 
HTML Principios Básicos
HTML Principios BásicosHTML Principios Básicos
HTML Principios Básicos
 
Curso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSSCurso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSS
 
Formulário HTML
Formulário HTMLFormulário HTML
Formulário HTML
 
Seletores css
Seletores cssSeletores css
Seletores css
 
Amarração e escopo
Amarração e escopoAmarração e escopo
Amarração e escopo
 
Relative pronouns 8ª série - 4º bimestre
Relative pronouns   8ª série - 4º bimestreRelative pronouns   8ª série - 4º bimestre
Relative pronouns 8ª série - 4º bimestre
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Curso MySQL #01 - Surgimento dos Bancos de Dados
Curso MySQL #01 - Surgimento dos Bancos de DadosCurso MySQL #01 - Surgimento dos Bancos de Dados
Curso MySQL #01 - Surgimento dos Bancos de Dados
 
MIT APP Inventor como instrumento de coleta de dados - Prof. Ricardo Costa Rossi
MIT APP Inventor como instrumento de coleta de dados - Prof. Ricardo Costa RossiMIT APP Inventor como instrumento de coleta de dados - Prof. Ricardo Costa Rossi
MIT APP Inventor como instrumento de coleta de dados - Prof. Ricardo Costa Rossi
 
Desenvolvimento Web com Java Script Full Stack
Desenvolvimento Web com Java Script Full StackDesenvolvimento Web com Java Script Full Stack
Desenvolvimento Web com Java Script Full Stack
 
Modelos de Processo de Software
Modelos de Processo de SoftwareModelos de Processo de Software
Modelos de Processo de Software
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
 
Resumao alemao
Resumao alemaoResumao alemao
Resumao alemao
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Html Básico
Html BásicoHtml Básico
Html Básico
 
39144789 gramatica-alema
39144789 gramatica-alema39144789 gramatica-alema
39144789 gramatica-alema
 
Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3
 

Semelhante a Implementando mensageria com JMS e Spring

Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerMarkus Christen
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWSDextra
 
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Pedro Lamas
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)Juarez Junior
 
DevOps - Entrega Contínua de Software
DevOps - Entrega Contínua de SoftwareDevOps - Entrega Contínua de Software
DevOps - Entrega Contínua de SoftwarePaulo Lacerda
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linuxaviram
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoLuiz Matos
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesAdriano Teixeira de Souza
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicaçãoHelen Picoli
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixNatanael Fonseca
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)DNAD
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicosLeonardo Eloy
 
Desenvolvimento de Aplicações Corporativas com Java
Desenvolvimento de Aplicações Corporativas com JavaDesenvolvimento de Aplicações Corporativas com Java
Desenvolvimento de Aplicações Corporativas com Javaarmeniocardoso
 

Semelhante a Implementando mensageria com JMS e Spring (20)

Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
DotNet vs. Java
DotNet vs. JavaDotNet vs. Java
DotNet vs. Java
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWS
 
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
 
WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)WebSphere 8 Intro (pt-BR)
WebSphere 8 Intro (pt-BR)
 
DevOps - Entrega Contínua de Software
DevOps - Entrega Contínua de SoftwareDevOps - Entrega Contínua de Software
DevOps - Entrega Contínua de Software
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de caso
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web Services
 
Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicação
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Web services
Web  servicesWeb  services
Web services
 
Microserviços
MicroserviçosMicroserviços
Microserviços
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicos
 
Desenvolvimento de Aplicações Corporativas com Java
Desenvolvimento de Aplicações Corporativas com JavaDesenvolvimento de Aplicações Corporativas com Java
Desenvolvimento de Aplicações Corporativas com Java
 

Mais de Paula Santana

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaPaula Santana
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?Paula Santana
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosPaula Santana
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Paula Santana
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começandoPaula Santana
 
Refatoracao de codigo
Refatoracao de codigoRefatoracao de codigo
Refatoracao de codigoPaula Santana
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosPaula Santana
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaPaula Santana
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantesPaula Santana
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherPaula Santana
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Paula Santana
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Paula Santana
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrialPaula Santana
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaPaula Santana
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcPaula Santana
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Paula Santana
 
Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Paula Santana
 

Mais de Paula Santana (20)

Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de moda
 
Como começar quando se esta começando?
Como começar quando se esta começando?Como começar quando se esta começando?
Como começar quando se esta começando?
 
Desvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventosDesvendando a arquitetura orientada a eventos
Desvendando a arquitetura orientada a eventos
 
Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14Clean code com features do java 8 a java 14
Clean code com features do java 8 a java 14
 
Como começas quando se está começando
Como começas quando se está começandoComo começas quando se está começando
Como começas quando se está começando
 
Refatoracao de codigo
Refatoracao de codigoRefatoracao de codigo
Refatoracao de codigo
 
Desenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventosDesenvolvimento com arquitetura baseada em eventos
Desenvolvimento com arquitetura baseada em eventos
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em java
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantes
 
Como uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulherComo uma linguagem de programação pode empoderar uma mulher
Como uma linguagem de programação pode empoderar uma mulher
 
Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?Graphql - o que é, onde e porque usar?
Graphql - o que é, onde e porque usar?
 
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
Desenvolvendosistemasgigantesnainternetcomarquiteturabaseada 190213231932 (1)
 
4 revolucao industrial
4 revolucao industrial4 revolucao industrial
4 revolucao industrial
 
Conhecendo o Jnosql
Conhecendo o JnosqlConhecendo o Jnosql
Conhecendo o Jnosql
 
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseadaDesenvolvendo sistemas gigantes na internet com arquitetura baseada
Desenvolvendo sistemas gigantes na internet com arquitetura baseada
 
Arquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdcArquitetura orientada a eventos em ambientes complexos tdc
Arquitetura orientada a eventos em ambientes complexos tdc
 
Testes de contrato
Testes de contratoTestes de contrato
Testes de contrato
 
Spring Rest
Spring RestSpring Rest
Spring Rest
 
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
Experiências de quem utiliza a Stack da Netflix e Spring boot em serviços de ...
 
Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?
 

Implementando mensageria com JMS e Spring