SlideShare a Scribd company logo
1 of 60
Download to read offline
Treinamento HornetQ
Sobre o Instrutor
Waelson Negreiros
• Possui mais de 12 anos de experiência em TI.
• Ministra treinamento a mais de 7 anos sobre as mais variadas
tecnologias.
• Detém varias certificações de grandes players do mercado.
waelson@gmail.com
Agenda
•
•
•
•

Conceitos de Mensageria
Arquitetura do HornetQ
HornetQ como Standalone
Mensageria com JEE
Conceito de Mensageria
•
•
•
•
•
•

O que é Mensageria?
Vantagens da Mensageria
Modelos Arquiteturais
Modelos de Mensageria
API JMS
Anatomia de uma Mensagem JMS
O que é Mensageria?
“É a maneira de se resolver problemas
complexos de integração de sistemas, através da
comunicação indireta entre as partes
envolvidas.”
Waelson Negreiros
O que é Mensageria?
Não existe acoplamento
direto entre as aplicações.

Application A

Middleware

Application B
O que é Mensageria?
• São características da mensageria:
– Permitir o processamento de requisições de forma
assíncrona.
– Integrar sistemas desenvolvidos em tecnologias diferentes.
– Permite reduzir o grau de acoplamento entre os
componentes.
O que é Mensageria?
• Permitir o processamento de requisições de forma
assíncrona.
O que é Mensageria?
• Integrar sistemas desenvolvidos em tecnologias
diferentes.
APIs específicas

Application A
(Java)

Middleware

Application B
(.NET)
O que é Mensageria?
• Permite reduzir o baixo grau de acoplamento entre
os componentes.

Application A

Middleware

Application B
Vantagens da Mensageria
• Redução do Gargalo dos Sistemas
• Aumento da Escalabilidade
• Arquitetura Flexível e Ágil
Vantagens da Mensageria
• Redução do Gargalo dos Sistemas
• Gargalos ocorrem quando a capacidade ou performance
de um sistema tem seus componentes ou recursos
limitados.
Vantagens da Mensageria
• Aumento da Escalabilidade
• É uma maneira de reduzir gargalos.
• Pode ser alcançado através da inclusão de vários receivers
que podem processar várias mensagens em paralelo.
Receiver 1
Sender 1
Receiver 2
Middleware
Sender 2

Receiver 3
Receiver N
Vantagens da Mensageria
• Arquitetura Flexível e Ágil
• Habilidade capaz de responder rapidamente as constantes
mudanças do ambiente.
• Através do uso da mensageria para abstrair e desacoplar é
possível, responder as mudanças de:
– Software
– Hardware
– Negócio
Modelos Arquiteturais
• Enterprise Messaging
• É um conjunto de ferramentas capaz de empregar os
conceitos por trás da mensageria em um ambiente
corporativo.
• Exemplo de Ferramentas:
– Comerciais
» IBM Websphere MQ, Sonic MQ, Microsoft Message Queuing,
TIBCO, etc.
– Open Sources
» HornetQ, ActiveMQ, etc.
Modelos Arquiteturais
• Enterprise Messaging
• Junto com Service Oriented Architecture (SOA), nasce um
novo tipo de produto, conhecimento como Enterprise
Service Bus – ESB.
• ESBs além de suportar uma variedade de protocolos de
comunicação, tem suas estruturas baseadas em
mensagens.
• JBoss ESB é um exemplo
Modelos Arquiteturais
• Tipos de Arquitetura
• Centralizada
• Descentralizada
• Híbrida
Modelos Arquiteturais
• Tipos de Arquitetura - Centralizada
• Existe um servidor de mensagem central que interliga
todos os clientes e potenciais consumidores.
Modelos Arquiteturais
• Tipos de Arquitetura - Descentralizada
• Usa Multicat IP em nível de rede
• Alguma funcionalidades como persistência, transação e
segurança estão embutidas no cliente.
• Serviço de roteamento é delegado a camada de rede.
• Multicast permite que um ou mais IPs unam-se para
formar um grupo.
• A mensagem é distribuída entre os participantes do grupo.
Modelos Arquiteturais
• Tipos de Arquitetura - Híbrida
• Fabricantes podem mesclar arquiteturas combinando as
abordagens: Centralizada e Descentraliza.
Comunicação via
Multicast IP

Comunicação via
TCP/IP

Client
Deamon

Client

Client
Deamon

Deamon

Client
Deamon
Modelos de Mensageria
• Terminologias
• MOM – Middleware Oriented Message
– Infraestrutura client/server que substitui a comunicação direta entre
as aplicações.

• Message
– Pacote de dados utilizado para troca de informações.

• Sender ou Producer
– Programa que escreve e envia uma mensagem.

• Consumer ou Receiver
– Programa que recebe e ler (processa) a mensagem.

• Channel (Topic/Queue)
– Caminho lógico utilizado para conectar o programa ao MOM e
transmitir a mensagem.
Modelos de Mensageria
• Classificados em dois tipos:
• Point-to-Point
• Publish-and-Subscribe
Modelos de Mensageria
• Point-to-Point
• Também conhecido por P2P.
• Permite o envio de mensagem de forma síncrona e
assíncrona.
• Utiliza como canal (Channel) de comunicação a fila (Queue)
• A mensagem enviada à Queue será recebida por um e
somente um Receiver/Consumer.
• Baseia-se no conceito “Fire and Forget”.
Modelos de Mensageria
• Point-to-Point
Modelos de Mensageria
• Publish-and-Subscribe
• Também conhecido por pub/sub.
• Utiliza como canal (Channel) de comunicação o
tópico(Topic)
• A mensagem enviada ao Topic, ao contrário da
Queue, pode ser recebida por vários consumidores, nesse
caso conhecidos como Subscriber.
• Os Topics utilizam técnicas de broadcasting.
Modelos de Mensageria
• Publish-and-Subscribe
API JMS
• O que é?
• Foi o esforço da indústria juntamente com a Sun
Microsystems, para prover uma API padrão de
conectividade aos MOMs.
• Criada pela JSR-914.
API JMS
• Organização
• Dividida basicamente em três partes:
– API Geral
» Pode ser usada para receber mensagem tanto de uma Queue
quanto de um Topic.
– API Point-to-Point
» É usado unicamente para mensagens em Queue.
– API Publish-and-Subscribe
» É usado unicamente para mensagens em Topic.
API JMS
• API Geral
• Possui sete principais interfaces, são elas:
–
–
–
–
–
–
–

ConnectionFactory
Destination
Connection
Session
Message
MessageProducer
MessageConsumer

• As interfaces ConnectionFactory e Destination são obtidas
via JNDI, sendo as demais criadas através de métodos
fábricas (factory method) nas várias interfaces.
API JMS
• API Geral
API JMS
• API Point-to-Point / Publishe-and-Subscribe
• Ambas possuem também sete interfaces principais:

• Tem o funcionamento similar a API Geral.
API JMS
• API Point-to-Point

• API Publishe-and-Subscribe
API JMS
• JNDI – Relembrando
• Java Naming and Directory Interface é uma API para
acesso a serviços de diretórios.
• Ela permite que o cliente descubra (lookup) e obtenha
dados ou objetos através de um nome.
API JMS
• JNDI – Relembrando
Context ctx = new InitialContext();
//Ignorando configurações dos parametros
Queue fila = (Queue)ctx.lookup(“minhaFila”);
//Faz algo com o objeto fila
Anatomia de uma Mensagem JMS
• A Mensagem é a parte mais importante da API JMS
• Todos os dados e eventos são comunicados com
mensagem.
• Restante da API é utilizada para facilitar a transferência das
mensagens
• Mensagens são diferentes de chamadas RPC, pois não
executam comandos.
• Mensagem carrega dados e fala ao “ouvinte” (receiver)
que algo aconteceu (evento)
Anatomia de uma Mensagem JMS
• Organização
• Mensagens são divididas em três partes:
– Message Header
– Message Properties
– Message Body
Anatomia de uma Mensagem JMS
• Organização
HEADER
JMSDestination
JMSDeliveryMode
JMSMessageID
JMSTimestamp
JMSExpiration
JMSRedelivered
JMSPriority
JMSReplyTo
JMSCorrelationID
JMSType
PROPERTIES

BODY

Payload
Anatomia de uma Mensagem JMS
• Message Header
Anatomia de uma Mensagem JMS
• Header
• Parâmetros automaticamente atribuídos
–
–
–
–
–
–
–

JMSDestination
JMSDeliveryMode
JMSMessageID
JMSTimestamp
JMSExpiration
JMSRedelivered
JMSPriority
Anatomia de uma Mensagem JMS
• Atributos - Header
• JMSDestination
– Identificador do canal de destino (Queue ou Topic)

• JMSDeliveryMode
– São dois os tipos de modo de entrega, são eles: Persistent e
NonPersistent
» Persistent – Mesmo que o message system falhe a mensagem
será entregue quando ele se recuperar.
» NonPersistent – Em caso de falha do message system a
mensagem será perdida
Anatomia de uma Mensagem JMS
• Atributos - Header
• JMSMessageID
– Identificador único da mensagem, gerado de acorco com o
fabricante do message system.

• JMSTimestamp
– Definido automaticamente pelo message producer quando
método send() for invocado. Contém data e hora que o message
system recebeu a mensagem.

• JMSExpiration
– Usada pelo message system para previnir que a mensagem seja
entregue ao consumer depois de expirada.
Anatomia de uma Mensagem JMS
• Atributos - Header
• JMSRedelivered
– Indica que a mensagem foi reentregue ao consumer. Retorna um
valor booleano, onde true indica que o consumer não reconheceu
a entrega da mensagem anteriormente.

• JMSPriority
– O producer pode atribuir uma prioridade à mensagem, que por
sua vez será utilizada pelo message system para priorizar a
entrega. São classificadas em duas categorias:
» Prioridade Normal: 0 – 4
» Prioridade Alta: 5 - 9
Anatomia de uma Mensagem JMS
• Exemplo Atributos - Header
• JMSDestination
• JMSDeliveryMode

• JMSMessageID
• JMSTimestamp
Anatomia de uma Mensagem JMS
• Exemplo Atributos - Header
• JMSExpiration
//Configuração no producer

• JMSRedelivered
• JMSPriority
//Configuração no producer
Anatomia de uma Mensagem JMS
• Header
• Parâmetros atribuídos pelo desenvolvedor
– JMSReplyTo
– JMSCorrelationID
– JMSType
Anatomia de uma Mensagem JMS
• Atributos - Header
• JMSReplyTo
– Em algumas situações pode ser necessário que o consumer
responda uma mensagem, ele poderá utilizar o destination
(javax.jms.Destionario) aqui especificado.

• JMSCorrelationID
– Geralmente utilizada para marcar uma mensagem atual como
uma resposta de uma mensagem anterior, utilizando como base o
JMSMessageID.

– JMSType
• Parâmetro opcional, seu objetivo é identificar a estrutura da
mensagem e tipo do payload.
Anatomia de uma Mensagem JMS
• Exemplo de Atributos - Header
• JMSReplyTo
• JMSCorrelationID
• JMSType
–

Não mapeia o tipo da classe do payload, cada message system tem um tratamento
diferente.
Anatomia de uma Mensagem JMS
• Properties
• Usado como extensão do Header.
• Desenvolvedores podem adicionar informações extra a
mensagem.
• Também são utilizados como base para filtrar informações.
• A interface Message fornece métodos acessores e
configuradores (get/set) para leitura e escrita das
propriedades. Os valores podem ser
String, boolean, byte, double, int, long ou float.
• São divididos em três categorias, são eles: Específica da
Aplicação, Definidas pela API JMS e Especifica do Provider
Anatomia de uma Mensagem JMS
• Properties
• Específica da Aplicação
–
–
–
–

Qualquer propriedade definida pelo desenvolvedor da aplicação.
São configuradas antes da mensagem ser enviada.
O desenvolvedor é livre para configurar o que quiser.
Exemplo:
Anatomia de uma Mensagem JMS
• Properties
• Definidas pela API JMS
– Possue as mesmas características da anterior.
– Muitas delas são configuradas pelo Provider JMS quando a
mensagem é enviada.
– O Provider JMS pode optar por suportar todas ou nenhuma.
– Exemplo:
Anatomia de uma Mensagem JMS
• Properties
• Específica do Provider
– Vários Providers JMS podem definir um conjunto de propriedades
proprietárias que podem ser configuradas pelo cliente ou pelo
provider automaticamente.
– Deve iniciar com JMS_<propriedade>.
– O HornetQ utiliza o préfixo _HQ<propriedade>
Anatomia de uma Mensagem JMS
• Properties
• Lendo as Propriedades
Anatomia de uma Mensagem JMS
• Body
• O conteúdo da mensagem muitas vezes leva as
informações mais importantes.
• A API JMS define a interface Message, mas nenhuma
implementação.
• Existem 5 subinterfaces, são elas:
–
–
–
–
–

TextMessage
StreamMessage
MapMessage
ObjectMessage
BytesMessage
Anatomia de uma Mensagem JMS
• Body
• É comum trafegar informações de formato texto, utilizando
os protocolos JSON e XML como formato de intercambio.
Arquitetura do HornetQ
•
•
•
•

O que é o HornetQ?
Arquitetura baseada em POJOs
APIs de Comunicação
Persistent Journal
Arquitetura do HornetQ
• O que é o HornetQ?
– Projeto open source mantido pela JBoss.
– Características:
•
•
•
•
•
•

100% open source
Projetado com usabilidade em mente
Escrito em Java (roda com Java 6 ou superior)
Performático
Arquitetura baseada em POJOs
Suporta mecanismos de cluster e HA.
Arquitetura do HornetQ
• O que é HornetQ?
– O que significa arquitetura baseada em POJOs?
• Permite ser injetado dentro da aplicação
• Pode ser instanciado por vários frameworks de DI, como por
exemplo: JBoss Microcontainer, Google Guice e Spring
Arquitetura do HornetQ
• APIs de Comunicação
– Os clientes se comunicam com o HotnetQ através de duas
APIs, são elas:
• Core Client
– Conjunto de componentes fornecidos com o servidor, que permite a iteração
das aplicações com o MOM através das várias funcionalidades disponíveis.

• JMS Client
– Padrão JMS de comunicação.
Arquitetura do HornetQ
• APIs de Comunicação
Apenas faz a tradução para a
API nativa.
Arquitetura do HornetQ
• Persistent Journal
– A razão da alta performance no HornetQ está no seu
mecanismo de persistência

More Related Content

What's hot

Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMAricelio Souza
 
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
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebArthur Emanuel
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de RequisitosPaulo Furtado
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationHelder da Rocha
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredElias Nogueira
 
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Martin Necasky
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvcleopp
 
Variáveis - Linguagem C
Variáveis - Linguagem CVariáveis - Linguagem C
Variáveis - Linguagem Cprofjr
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3Elaine Cecília Gatto
 
Padrões de Projetos de Interface do Usuário
Padrões de Projetos de Interface do UsuárioPadrões de Projetos de Interface do Usuário
Padrões de Projetos de Interface do UsuárioFatec Jales
 

What's hot (20)

Modelo de falhas
Modelo de falhasModelo de falhas
Modelo de falhas
 
Filas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQFilas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQ
 
Domain driven-design
Domain driven-designDomain driven-design
Domain driven-design
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVM
 
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
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
 
Levantamento Ágil de Requisitos
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de Requisitos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring Integration
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
Aula 00 - Introducao ao Windows Server .pdf
Aula 00 - Introducao ao Windows Server .pdfAula 00 - Introducao ao Windows Server .pdf
Aula 00 - Introducao ao Windows Server .pdf
 
Variáveis - Linguagem C
Variáveis - Linguagem CVariáveis - Linguagem C
Variáveis - Linguagem C
 
IHC - Slide 2 - Usabilidade e Princípios de Design
IHC - Slide 2 - Usabilidade e Princípios de DesignIHC - Slide 2 - Usabilidade e Princípios de Design
IHC - Slide 2 - Usabilidade e Princípios de Design
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3
 
Padrões de Projetos de Interface do Usuário
Padrões de Projetos de Interface do UsuárioPadrões de Projetos de Interface do Usuário
Padrões de Projetos de Interface do Usuário
 

Viewers also liked (14)

Integração de Sistemas e JMS Assíncrono
Integração de Sistemas e JMS AssíncronoIntegração de Sistemas e JMS Assíncrono
Integração de Sistemas e JMS Assíncrono
 
HornetQ - 2.1.HornetQ no Modo Standalone
HornetQ - 2.1.HornetQ no Modo StandaloneHornetQ - 2.1.HornetQ no Modo Standalone
HornetQ - 2.1.HornetQ no Modo Standalone
 
HornetQ - 2.Arquitetura do HornetQ
HornetQ - 2.Arquitetura do HornetQHornetQ - 2.Arquitetura do HornetQ
HornetQ - 2.Arquitetura do HornetQ
 
HornetQ - 15.Bridge
HornetQ - 15.BridgeHornetQ - 15.Bridge
HornetQ - 15.Bridge
 
HornetQ - 9.Mecanismo de Log
HornetQ - 9.Mecanismo de LogHornetQ - 9.Mecanismo de Log
HornetQ - 9.Mecanismo de Log
 
HornetQ - 6.Integração com JBoss 5
HornetQ - 6.Integração com JBoss 5HornetQ - 6.Integração com JBoss 5
HornetQ - 6.Integração com JBoss 5
 
HornetQ - 5.Transports
HornetQ - 5.TransportsHornetQ - 5.Transports
HornetQ - 5.Transports
 
HornetQ - 8.Segurança
HornetQ - 8.SegurançaHornetQ - 8.Segurança
HornetQ - 8.Segurança
 
HornetQ - 11.Mensagens Expiradas
HornetQ - 11.Mensagens ExpiradasHornetQ - 11.Mensagens Expiradas
HornetQ - 11.Mensagens Expiradas
 
HornetQ - 4.Persistência
HornetQ - 4.PersistênciaHornetQ - 4.Persistência
HornetQ - 4.Persistência
 
HornetQ - 12.Paginação
HornetQ - 12.PaginaçãoHornetQ - 12.Paginação
HornetQ - 12.Paginação
 
HornetQ - 10.Reentrega de Mensagens e DLQ
HornetQ - 10.Reentrega de Mensagens e DLQHornetQ - 10.Reentrega de Mensagens e DLQ
HornetQ - 10.Reentrega de Mensagens e DLQ
 
Novas APIs do Java EE 7: JMS e Web Services
Novas APIs do Java EE 7: JMS e Web ServicesNovas APIs do Java EE 7: JMS e Web Services
Novas APIs do Java EE 7: JMS e Web Services
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 

Similar to Hornet - 1.Conceitos de Mensageria

TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...tdc-globalcode
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaPaula Santana
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
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
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvcJhordam Siqueira
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxChadidoDiogo1
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linuxaviram
 
Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoJoao Johanes
 
Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud ComputingFrederico Madeira
 
Arquitetura e Integração de sistemas
Arquitetura e Integração de sistemasArquitetura e Integração de sistemas
Arquitetura e Integração de sistemasJether Rodrigues
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Apostila de sql basico
Apostila de sql basicoApostila de sql basico
Apostila de sql basicoFernando Palma
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaDaniel Silveira
 

Similar to Hornet - 1.Conceitos de Mensageria (20)

Java Messaging Service
Java Messaging ServiceJava Messaging Service
Java Messaging Service
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
TDC2017 | POA Trilha Arquitetura - 15 padrões essenciais de mensageria para i...
 
Facilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações JavaFacilitando a implementação de mensageria em aplicações Java
Facilitando a implementação de mensageria em aplicações Java
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
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
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integração
 
Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud Computing
 
Arquitetura e Integração de sistemas
Arquitetura e Integração de sistemasArquitetura e Integração de sistemas
Arquitetura e Integração de sistemas
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Apostila de sql basico
Apostila de sql basicoApostila de sql basico
Apostila de sql basico
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 

More from Waelson Negreiros Nunes (13)

Treinamento ajax ria - 01
Treinamento ajax   ria - 01Treinamento ajax   ria - 01
Treinamento ajax ria - 01
 
Treinamento ajax 05
Treinamento ajax   05Treinamento ajax   05
Treinamento ajax 05
 
Treinamento ajax 04
Treinamento ajax   04Treinamento ajax   04
Treinamento ajax 04
 
Treinamento ajax 03
Treinamento ajax   03Treinamento ajax   03
Treinamento ajax 03
 
Treinamento ajax 02
Treinamento ajax   02Treinamento ajax   02
Treinamento ajax 02
 
Treinamento ajax modulo javascript
Treinamento ajax   modulo javascriptTreinamento ajax   modulo javascript
Treinamento ajax modulo javascript
 
Desvendando o mundo iOS
Desvendando o mundo iOSDesvendando o mundo iOS
Desvendando o mundo iOS
 
HornetQ - 14.Cluster
HornetQ - 14.ClusterHornetQ - 14.Cluster
HornetQ - 14.Cluster
 
HornetQ - 13.Alta Disponibilidade e Failover
HornetQ - 13.Alta Disponibilidade e FailoverHornetQ - 13.Alta Disponibilidade e Failover
HornetQ - 13.Alta Disponibilidade e Failover
 
HornetQ - 16.Divert e Splitting de Mensagem
HornetQ - 16.Divert e Splitting de MensagemHornetQ - 16.Divert e Splitting de Mensagem
HornetQ - 16.Divert e Splitting de Mensagem
 
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaPalestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
 
Curso flex sicoob - aula 11
Curso flex   sicoob - aula 11Curso flex   sicoob - aula 11
Curso flex sicoob - aula 11
 
EJB 3.1
EJB 3.1EJB 3.1
EJB 3.1
 

Hornet - 1.Conceitos de Mensageria

  • 2. Sobre o Instrutor Waelson Negreiros • Possui mais de 12 anos de experiência em TI. • Ministra treinamento a mais de 7 anos sobre as mais variadas tecnologias. • Detém varias certificações de grandes players do mercado. waelson@gmail.com
  • 3. Agenda • • • • Conceitos de Mensageria Arquitetura do HornetQ HornetQ como Standalone Mensageria com JEE
  • 4. Conceito de Mensageria • • • • • • O que é Mensageria? Vantagens da Mensageria Modelos Arquiteturais Modelos de Mensageria API JMS Anatomia de uma Mensagem JMS
  • 5. O que é Mensageria? “É a maneira de se resolver problemas complexos de integração de sistemas, através da comunicação indireta entre as partes envolvidas.” Waelson Negreiros
  • 6. O que é Mensageria? Não existe acoplamento direto entre as aplicações. Application A Middleware Application B
  • 7. O que é Mensageria? • São características da mensageria: – Permitir o processamento de requisições de forma assíncrona. – Integrar sistemas desenvolvidos em tecnologias diferentes. – Permite reduzir o grau de acoplamento entre os componentes.
  • 8. O que é Mensageria? • Permitir o processamento de requisições de forma assíncrona.
  • 9. O que é Mensageria? • Integrar sistemas desenvolvidos em tecnologias diferentes. APIs específicas Application A (Java) Middleware Application B (.NET)
  • 10. O que é Mensageria? • Permite reduzir o baixo grau de acoplamento entre os componentes. Application A Middleware Application B
  • 11. Vantagens da Mensageria • Redução do Gargalo dos Sistemas • Aumento da Escalabilidade • Arquitetura Flexível e Ágil
  • 12. Vantagens da Mensageria • Redução do Gargalo dos Sistemas • Gargalos ocorrem quando a capacidade ou performance de um sistema tem seus componentes ou recursos limitados.
  • 13. Vantagens da Mensageria • Aumento da Escalabilidade • É uma maneira de reduzir gargalos. • Pode ser alcançado através da inclusão de vários receivers que podem processar várias mensagens em paralelo. Receiver 1 Sender 1 Receiver 2 Middleware Sender 2 Receiver 3 Receiver N
  • 14. Vantagens da Mensageria • Arquitetura Flexível e Ágil • Habilidade capaz de responder rapidamente as constantes mudanças do ambiente. • Através do uso da mensageria para abstrair e desacoplar é possível, responder as mudanças de: – Software – Hardware – Negócio
  • 15. Modelos Arquiteturais • Enterprise Messaging • É um conjunto de ferramentas capaz de empregar os conceitos por trás da mensageria em um ambiente corporativo. • Exemplo de Ferramentas: – Comerciais » IBM Websphere MQ, Sonic MQ, Microsoft Message Queuing, TIBCO, etc. – Open Sources » HornetQ, ActiveMQ, etc.
  • 16. Modelos Arquiteturais • Enterprise Messaging • Junto com Service Oriented Architecture (SOA), nasce um novo tipo de produto, conhecimento como Enterprise Service Bus – ESB. • ESBs além de suportar uma variedade de protocolos de comunicação, tem suas estruturas baseadas em mensagens. • JBoss ESB é um exemplo
  • 17. Modelos Arquiteturais • Tipos de Arquitetura • Centralizada • Descentralizada • Híbrida
  • 18. Modelos Arquiteturais • Tipos de Arquitetura - Centralizada • Existe um servidor de mensagem central que interliga todos os clientes e potenciais consumidores.
  • 19. Modelos Arquiteturais • Tipos de Arquitetura - Descentralizada • Usa Multicat IP em nível de rede • Alguma funcionalidades como persistência, transação e segurança estão embutidas no cliente. • Serviço de roteamento é delegado a camada de rede. • Multicast permite que um ou mais IPs unam-se para formar um grupo. • A mensagem é distribuída entre os participantes do grupo.
  • 20. Modelos Arquiteturais • Tipos de Arquitetura - Híbrida • Fabricantes podem mesclar arquiteturas combinando as abordagens: Centralizada e Descentraliza. Comunicação via Multicast IP Comunicação via TCP/IP Client Deamon Client Client Deamon Deamon Client Deamon
  • 21. Modelos de Mensageria • Terminologias • MOM – Middleware Oriented Message – Infraestrutura client/server que substitui a comunicação direta entre as aplicações. • Message – Pacote de dados utilizado para troca de informações. • Sender ou Producer – Programa que escreve e envia uma mensagem. • Consumer ou Receiver – Programa que recebe e ler (processa) a mensagem. • Channel (Topic/Queue) – Caminho lógico utilizado para conectar o programa ao MOM e transmitir a mensagem.
  • 22. Modelos de Mensageria • Classificados em dois tipos: • Point-to-Point • Publish-and-Subscribe
  • 23. Modelos de Mensageria • Point-to-Point • Também conhecido por P2P. • Permite o envio de mensagem de forma síncrona e assíncrona. • Utiliza como canal (Channel) de comunicação a fila (Queue) • A mensagem enviada à Queue será recebida por um e somente um Receiver/Consumer. • Baseia-se no conceito “Fire and Forget”.
  • 24. Modelos de Mensageria • Point-to-Point
  • 25. Modelos de Mensageria • Publish-and-Subscribe • Também conhecido por pub/sub. • Utiliza como canal (Channel) de comunicação o tópico(Topic) • A mensagem enviada ao Topic, ao contrário da Queue, pode ser recebida por vários consumidores, nesse caso conhecidos como Subscriber. • Os Topics utilizam técnicas de broadcasting.
  • 26. Modelos de Mensageria • Publish-and-Subscribe
  • 27. API JMS • O que é? • Foi o esforço da indústria juntamente com a Sun Microsystems, para prover uma API padrão de conectividade aos MOMs. • Criada pela JSR-914.
  • 28. API JMS • Organização • Dividida basicamente em três partes: – API Geral » Pode ser usada para receber mensagem tanto de uma Queue quanto de um Topic. – API Point-to-Point » É usado unicamente para mensagens em Queue. – API Publish-and-Subscribe » É usado unicamente para mensagens em Topic.
  • 29. API JMS • API Geral • Possui sete principais interfaces, são elas: – – – – – – – ConnectionFactory Destination Connection Session Message MessageProducer MessageConsumer • As interfaces ConnectionFactory e Destination são obtidas via JNDI, sendo as demais criadas através de métodos fábricas (factory method) nas várias interfaces.
  • 31. API JMS • API Point-to-Point / Publishe-and-Subscribe • Ambas possuem também sete interfaces principais: • Tem o funcionamento similar a API Geral.
  • 32. API JMS • API Point-to-Point • API Publishe-and-Subscribe
  • 33. API JMS • JNDI – Relembrando • Java Naming and Directory Interface é uma API para acesso a serviços de diretórios. • Ela permite que o cliente descubra (lookup) e obtenha dados ou objetos através de um nome.
  • 34. API JMS • JNDI – Relembrando Context ctx = new InitialContext(); //Ignorando configurações dos parametros Queue fila = (Queue)ctx.lookup(“minhaFila”); //Faz algo com o objeto fila
  • 35. Anatomia de uma Mensagem JMS • A Mensagem é a parte mais importante da API JMS • Todos os dados e eventos são comunicados com mensagem. • Restante da API é utilizada para facilitar a transferência das mensagens • Mensagens são diferentes de chamadas RPC, pois não executam comandos. • Mensagem carrega dados e fala ao “ouvinte” (receiver) que algo aconteceu (evento)
  • 36. Anatomia de uma Mensagem JMS • Organização • Mensagens são divididas em três partes: – Message Header – Message Properties – Message Body
  • 37. Anatomia de uma Mensagem JMS • Organização HEADER JMSDestination JMSDeliveryMode JMSMessageID JMSTimestamp JMSExpiration JMSRedelivered JMSPriority JMSReplyTo JMSCorrelationID JMSType PROPERTIES BODY Payload
  • 38. Anatomia de uma Mensagem JMS • Message Header
  • 39. Anatomia de uma Mensagem JMS • Header • Parâmetros automaticamente atribuídos – – – – – – – JMSDestination JMSDeliveryMode JMSMessageID JMSTimestamp JMSExpiration JMSRedelivered JMSPriority
  • 40. Anatomia de uma Mensagem JMS • Atributos - Header • JMSDestination – Identificador do canal de destino (Queue ou Topic) • JMSDeliveryMode – São dois os tipos de modo de entrega, são eles: Persistent e NonPersistent » Persistent – Mesmo que o message system falhe a mensagem será entregue quando ele se recuperar. » NonPersistent – Em caso de falha do message system a mensagem será perdida
  • 41. Anatomia de uma Mensagem JMS • Atributos - Header • JMSMessageID – Identificador único da mensagem, gerado de acorco com o fabricante do message system. • JMSTimestamp – Definido automaticamente pelo message producer quando método send() for invocado. Contém data e hora que o message system recebeu a mensagem. • JMSExpiration – Usada pelo message system para previnir que a mensagem seja entregue ao consumer depois de expirada.
  • 42. Anatomia de uma Mensagem JMS • Atributos - Header • JMSRedelivered – Indica que a mensagem foi reentregue ao consumer. Retorna um valor booleano, onde true indica que o consumer não reconheceu a entrega da mensagem anteriormente. • JMSPriority – O producer pode atribuir uma prioridade à mensagem, que por sua vez será utilizada pelo message system para priorizar a entrega. São classificadas em duas categorias: » Prioridade Normal: 0 – 4 » Prioridade Alta: 5 - 9
  • 43. Anatomia de uma Mensagem JMS • Exemplo Atributos - Header • JMSDestination • JMSDeliveryMode • JMSMessageID • JMSTimestamp
  • 44. Anatomia de uma Mensagem JMS • Exemplo Atributos - Header • JMSExpiration //Configuração no producer • JMSRedelivered • JMSPriority //Configuração no producer
  • 45. Anatomia de uma Mensagem JMS • Header • Parâmetros atribuídos pelo desenvolvedor – JMSReplyTo – JMSCorrelationID – JMSType
  • 46. Anatomia de uma Mensagem JMS • Atributos - Header • JMSReplyTo – Em algumas situações pode ser necessário que o consumer responda uma mensagem, ele poderá utilizar o destination (javax.jms.Destionario) aqui especificado. • JMSCorrelationID – Geralmente utilizada para marcar uma mensagem atual como uma resposta de uma mensagem anterior, utilizando como base o JMSMessageID. – JMSType • Parâmetro opcional, seu objetivo é identificar a estrutura da mensagem e tipo do payload.
  • 47. Anatomia de uma Mensagem JMS • Exemplo de Atributos - Header • JMSReplyTo • JMSCorrelationID • JMSType – Não mapeia o tipo da classe do payload, cada message system tem um tratamento diferente.
  • 48. Anatomia de uma Mensagem JMS • Properties • Usado como extensão do Header. • Desenvolvedores podem adicionar informações extra a mensagem. • Também são utilizados como base para filtrar informações. • A interface Message fornece métodos acessores e configuradores (get/set) para leitura e escrita das propriedades. Os valores podem ser String, boolean, byte, double, int, long ou float. • São divididos em três categorias, são eles: Específica da Aplicação, Definidas pela API JMS e Especifica do Provider
  • 49. Anatomia de uma Mensagem JMS • Properties • Específica da Aplicação – – – – Qualquer propriedade definida pelo desenvolvedor da aplicação. São configuradas antes da mensagem ser enviada. O desenvolvedor é livre para configurar o que quiser. Exemplo:
  • 50. Anatomia de uma Mensagem JMS • Properties • Definidas pela API JMS – Possue as mesmas características da anterior. – Muitas delas são configuradas pelo Provider JMS quando a mensagem é enviada. – O Provider JMS pode optar por suportar todas ou nenhuma. – Exemplo:
  • 51. Anatomia de uma Mensagem JMS • Properties • Específica do Provider – Vários Providers JMS podem definir um conjunto de propriedades proprietárias que podem ser configuradas pelo cliente ou pelo provider automaticamente. – Deve iniciar com JMS_<propriedade>. – O HornetQ utiliza o préfixo _HQ<propriedade>
  • 52. Anatomia de uma Mensagem JMS • Properties • Lendo as Propriedades
  • 53. Anatomia de uma Mensagem JMS • Body • O conteúdo da mensagem muitas vezes leva as informações mais importantes. • A API JMS define a interface Message, mas nenhuma implementação. • Existem 5 subinterfaces, são elas: – – – – – TextMessage StreamMessage MapMessage ObjectMessage BytesMessage
  • 54. Anatomia de uma Mensagem JMS • Body • É comum trafegar informações de formato texto, utilizando os protocolos JSON e XML como formato de intercambio.
  • 55. Arquitetura do HornetQ • • • • O que é o HornetQ? Arquitetura baseada em POJOs APIs de Comunicação Persistent Journal
  • 56. Arquitetura do HornetQ • O que é o HornetQ? – Projeto open source mantido pela JBoss. – Características: • • • • • • 100% open source Projetado com usabilidade em mente Escrito em Java (roda com Java 6 ou superior) Performático Arquitetura baseada em POJOs Suporta mecanismos de cluster e HA.
  • 57. Arquitetura do HornetQ • O que é HornetQ? – O que significa arquitetura baseada em POJOs? • Permite ser injetado dentro da aplicação • Pode ser instanciado por vários frameworks de DI, como por exemplo: JBoss Microcontainer, Google Guice e Spring
  • 58. Arquitetura do HornetQ • APIs de Comunicação – Os clientes se comunicam com o HotnetQ através de duas APIs, são elas: • Core Client – Conjunto de componentes fornecidos com o servidor, que permite a iteração das aplicações com o MOM através das várias funcionalidades disponíveis. • JMS Client – Padrão JMS de comunicação.
  • 59. Arquitetura do HornetQ • APIs de Comunicação Apenas faz a tradução para a API nativa.
  • 60. Arquitetura do HornetQ • Persistent Journal – A razão da alta performance no HornetQ está no seu mecanismo de persistência