hornet - 1.conceitos de mensageria

60
Treinamento HornetQ

Upload: waelson-negreiros-nunes

Post on 23-Jun-2015

2.745 views

Category:

Career


5 download

TRANSCRIPT

Page 1: Hornet - 1.Conceitos de Mensageria

Treinamento HornetQ

Page 2: Hornet - 1.Conceitos de Mensageria

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.

[email protected]

Page 3: Hornet - 1.Conceitos de Mensageria

Agenda

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

Page 4: Hornet - 1.Conceitos de Mensageria

Conceito de Mensageria

• O que é Mensageria?• Vantagens da Mensageria• Modelos Arquiteturais• Modelos de Mensageria• API JMS• Anatomia de uma Mensagem JMS

Page 5: Hornet - 1.Conceitos de 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?

Page 6: Hornet - 1.Conceitos de Mensageria

O que é Mensageria?

Application A Middleware Application B

Não existe acoplamento direto entre as aplicações.

Page 7: Hornet - 1.Conceitos de 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?

Page 8: Hornet - 1.Conceitos de Mensageria

• Permitir o processamento de requisições de forma assíncrona.

O que é Mensageria?

Page 9: Hornet - 1.Conceitos de Mensageria

• Integrar sistemas desenvolvidos em tecnologias diferentes.

O que é Mensageria?

Application A(Java)

Middleware Application B(.NET)

APIs específicas

Page 10: Hornet - 1.Conceitos de Mensageria

• Permite reduzir o baixo grau de acoplamento entre os componentes.

O que é Mensageria?

Application A Middleware Application B

Page 11: Hornet - 1.Conceitos de Mensageria

• Redução do Gargalo dos Sistemas• Aumento da Escalabilidade• Arquitetura Flexível e Ágil

Vantagens da Mensageria

Page 12: Hornet - 1.Conceitos de 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

Page 13: Hornet - 1.Conceitos de 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.

Vantagens da Mensageria

Middleware

Receiver 1

Receiver 2

Receiver 3

Receiver N

Sender 1

Sender 2

Page 14: Hornet - 1.Conceitos de 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

Vantagens da Mensageria

Page 15: Hornet - 1.Conceitos de Mensageria

• 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

Page 16: Hornet - 1.Conceitos de Mensageria

• 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

Page 17: Hornet - 1.Conceitos de Mensageria

• Tipos de Arquitetura• Centralizada• Descentralizada• Híbrida

Modelos Arquiteturais

Page 18: Hornet - 1.Conceitos de Mensageria

• Tipos de Arquitetura - Centralizada• Existe um servidor de mensagem central que interliga

todos os clientes e potenciais consumidores.

Modelos Arquiteturais

Page 19: Hornet - 1.Conceitos de Mensageria

• 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

Page 20: Hornet - 1.Conceitos de Mensageria

• Tipos de Arquitetura - Híbrida• Fabricantes podem mesclar arquiteturas combinando as

abordagens: Centralizada e Descentraliza.

Modelos Arquiteturais

Client

Deamon

Comunicação via TCP/IP

Deamon

Deamon

Deamon

Client

Client

Client

Comunicação via Multicast IP

Page 21: Hornet - 1.Conceitos 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

Page 22: Hornet - 1.Conceitos de Mensageria

• Classificados em dois tipos:• Point-to-Point• Publish-and-Subscribe

Modelos de Mensageria

Page 23: Hornet - 1.Conceitos 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

Page 24: Hornet - 1.Conceitos de Mensageria

• Point-to-Point

Modelos de Mensageria

Page 25: Hornet - 1.Conceitos 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

Page 26: Hornet - 1.Conceitos de Mensageria

• Publish-and-Subscribe

Modelos de Mensageria

Page 27: Hornet - 1.Conceitos de Mensageria

• 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

Page 28: Hornet - 1.Conceitos de Mensageria

• 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

Page 29: Hornet - 1.Conceitos de Mensageria

• 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

Page 30: Hornet - 1.Conceitos de Mensageria

• API Geral

API JMS

Page 31: Hornet - 1.Conceitos de Mensageria

• API Point-to-Point / Publishe-and-Subscribe• Ambas possuem também sete interfaces principais:

• Tem o funcionamento similar a API Geral.

API JMS

Page 32: Hornet - 1.Conceitos de Mensageria

• API Point-to-Point

• API Publishe-and-Subscribe

API JMS

Page 33: Hornet - 1.Conceitos de Mensageria

• 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

Page 34: Hornet - 1.Conceitos de Mensageria

• JNDI – RelembrandoContext ctx = new InitialContext();//Ignorando configurações dos parametrosQueue fila = (Queue)ctx.lookup(“minhaFila”);//Faz algo com o objeto fila

API JMS

Page 35: Hornet - 1.Conceitos de Mensageria

• 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

Page 36: Hornet - 1.Conceitos de Mensageria

• Organização• Mensagens são divididas em três partes:

– Message Header– Message Properties– Message Body

Anatomia de uma Mensagem JMS

Page 37: Hornet - 1.Conceitos de Mensageria

• Organização

Anatomia de uma Mensagem JMS

HEADERJMSDestination

JMSDeliveryModeJMSMessageIDJMSTimestampJMSExpiration

JMSRedeliveredJMSPriorityJMSReplyTo

JMSCorrelationIDJMSType

PROPERTIES

BODY Payload

Page 38: Hornet - 1.Conceitos de Mensageria

• Message Header

Anatomia de uma Mensagem JMS

Page 39: Hornet - 1.Conceitos de Mensageria

• Header• Parâmetros automaticamente atribuídos

– JMSDestination– JMSDeliveryMode– JMSMessageID– JMSTimestamp– JMSExpiration– JMSRedelivered– JMSPriority

Anatomia de uma Mensagem JMS

Page 40: Hornet - 1.Conceitos de Mensageria

• 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

Page 41: Hornet - 1.Conceitos de Mensageria

• 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

Page 42: Hornet - 1.Conceitos de Mensageria

• 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

Page 43: Hornet - 1.Conceitos de Mensageria

• Exemplo Atributos - Header• JMSDestination

• JMSDeliveryMode

• JMSMessageID

• JMSTimestamp

Anatomia de uma Mensagem JMS

Page 44: Hornet - 1.Conceitos de Mensageria

• Exemplo Atributos - Header• JMSExpiration

• JMSRedelivered

• JMSPriority

Anatomia de uma Mensagem JMS

//Configuração no producer

//Configuração no producer

Page 45: Hornet - 1.Conceitos de Mensageria

• Header• Parâmetros atribuídos pelo desenvolvedor

– JMSReplyTo– JMSCorrelationID– JMSType

Anatomia de uma Mensagem JMS

Page 46: Hornet - 1.Conceitos de Mensageria

• 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

Page 47: Hornet - 1.Conceitos de Mensageria

• 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

Page 48: Hornet - 1.Conceitos de Mensageria

• 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

Page 49: Hornet - 1.Conceitos de Mensageria

• 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

Page 50: Hornet - 1.Conceitos de Mensageria

• 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

Page 51: Hornet - 1.Conceitos de Mensageria

• 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

Page 52: Hornet - 1.Conceitos de Mensageria

• Properties• Lendo as Propriedades

Anatomia de uma Mensagem JMS

Page 53: Hornet - 1.Conceitos de Mensageria

• 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

Page 54: Hornet - 1.Conceitos de Mensageria

• Body• É comum trafegar informações de formato texto, utilizando

os protocolos JSON e XML como formato de intercambio.

Anatomia de uma Mensagem JMS

Page 55: Hornet - 1.Conceitos de Mensageria

Arquitetura do HornetQ

• O que é o HornetQ?• Arquitetura baseada em POJOs• APIs de Comunicação• Persistent Journal

Page 56: Hornet - 1.Conceitos de Mensageria

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.

Page 57: Hornet - 1.Conceitos de Mensageria

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

Page 58: Hornet - 1.Conceitos de Mensageria

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.

Page 59: Hornet - 1.Conceitos de Mensageria

Arquitetura do HornetQ

• APIs de Comunicação

Apenas faz a tradução para a API nativa.

Page 60: Hornet - 1.Conceitos de Mensageria

Arquitetura do HornetQ

• Persistent Journal– A razão da alta performance no HornetQ está no seu

mecanismo de persistência