• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Hornet - 1.Conceitos de Mensageria
 

Hornet - 1.Conceitos de Mensageria

on

  • 1,594 views

 

Statistics

Views

Total Views
1,594
Views on SlideShare
1,338
Embed Views
256

Actions

Likes
0
Downloads
14
Comments
0

1 Embed 256

http://waelson.com.br 256

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Hornet - 1.Conceitos de Mensageria Hornet - 1.Conceitos de Mensageria Presentation Transcript

    • 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