Tdc2012 java e amqp - uma alternativa ao jms

1.186 visualizações

Publicada em

Slides da minha apresentação "Java e AMQP: Uma alternativa ao JMS" realizada no TDC2012.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.186
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tdc2012 java e amqp - uma alternativa ao jms

  1. 1. Trilha – Java EEJava e AMQP: Uma alternativa ao JMS Luciano Davoglio Molinari lucmolinari@gmail.com @LucMolinari http://lucianomolinari.wordpress.com Globalcode – Open4education
  2. 2. Agenda Mensageria Modelos JMS AMQP AMQP x JMS Rabbit MQ Integração Java x AMQP (Demo)2 Globalcode – Open4education
  3. 3. Mensageria Sistemas heterogênios Baixo acomplamento Assíncrono Confiabilidade/Escalabilidade/Distribuição Comunicação através de um MOM (Message- Oriented-Middleware)3 Globalcode – Open4education
  4. 4. Mensageria - MOM Implementação do protocolo Armazenamento Disponibilidade/performance Roteamento4 Globalcode – Open4education
  5. 5. Mensageria Escreve Recebe Sistema A Mensagem MOM Sistema B Mensagem5 Globalcode – Open4education
  6. 6. Mensageria - Restrições Novo componente na arquitetura (MOM) Nativamente assíncrono Mais de 1 padrão (JMS, MSMQ, AMQP)6 Globalcode – Open4education
  7. 7. Modelo Point-to-Point Uso de filas Apenas 1 consumidor 1 ou mais produtores Armazena as mensagens em uma fila Produtor 1 Escreve Recebe … Mensagem MOM Consumidor Mensagem Produtor N7 Globalcode – Open4education
  8. 8. Publish/Subscribe Uso de tópico 1 ou mais consumidores 1 ou mais produtores Produtor 1 Consumidor 1 Escreve Recebe … Mensagem MOM … Mensagem Produtor N Consumidor N Armazena as mensagens em um tópico8 Globalcode – Open4education
  9. 9. JMS (Java Message Service) Especificação madura/conceituada Primeiro padrão apoiado por grandes players Point-to-point/Publish-subscribe Baixa curva de aprendizado9 Globalcode – Open4education
  10. 10. JMS - Restrições Padroniza somente a API Cada implementação define seu próprio protocolo Interoperabilidade dentro da plataforma Java10 Globalcode – Open4education
  11. 11. AMQP (Advanced Message Queuing Protocol) Desenvolvido no banco JP Morgan Outras empresas: Red Hat, Cisco, Microsoft, entre outras 2011 – OASIS Out/2011 – AMQP 1.011 Globalcode – Open4education
  12. 12. AMQP Protocolo aberto Padronizado Interoperável (realmente!) Confiável Cases de missão crítica (financeiro, telecom)12 Globalcode – Open4education
  13. 13. AMQP – Fluxo mensagem • Mensagens são sempre enviadas para exchanges • Queues são conectadas à exchanges através de bindings Prod. 1 Q1 Cons. 1 Exchange 1 … Q2 Cons. 2 Prod. N Broker13 Globalcode – Open4education
  14. 14. AMQP – Exchange Types Direct Fanout Topic Header14 Globalcode – Open4education
  15. 15. Direct Exchange • Binding deve casar exatamente com a routing key Routing key pode ser vazia Parecido com o modelo point-to-point (Queue) do JMS Prod. 1 Exchange 1 … Q1 Cons. 1 Prod. N Broker15 Globalcode – Open4education
  16. 16. Fanout Exchange Não suporta routing-key • Mensagens vão para todas filas ligadas ao exchange Parecido com o modelo Pub/Sub do JMS sem seletor de mensagem Prod. 1 Q1 Cons. 1 Exchange 1 … Q2 Cons. 2 Prod. N Broker16 Globalcode – Open4education
  17. 17. Topic Exchange Suporta routing-key Parecido com Direct, mas suporta wildcard nas routing keys Parecido com o modelo Pub/Sub do JMS com seletor de mensagem Prod. 1 y 1.* Q1 Cons. 1 e *.k Exchange 1 … Key 2.# Q2 Cons. 2 Prod. N Broker17 Globalcode – Open4education
  18. 18. Header Exchange Parecido com Topic Exchange Não suporta routing key Roteamento é feito através de atributos do cabeçalho (header) Menos usado18 Globalcode – Open4education
  19. 19. AMQP/JMS AMQP JMS JMS Padronização à nível de protocolo Padronização à nível de API Interoperabildade Interoperabilidade (Java) Mensagem formada por header, Mensagem formada por header, properties e body properties e body Body do tipo binário Body do tipo TextMessage, ObjectMessage, entre outros Direct Exchange Queue Fanout Exchange Topic sem seletor de mensagem Topic Exchange Topic com seletor de mensagem Header Exchange Topic com seletor de mensagem19 Globalcode – Open4education
  20. 20. Rabbit MQ Sistema de mensageria AMQP Robusto Cluster/Alta disponibilidade Interface WEB de gerenciamento Base de dados interna Multi-plataforma (SO) Multi-plataforma (Linguagens)20 Globalcode – Open4education
  21. 21. Rabbit MQ Open source e suporte comercial Escrito em Erlang Mantido pela SpringSource/VMWare Rápido (Muito!) Leve Usado fortemente na nuvem (EC2)21 Globalcode – Open4education
  22. 22. Integração Java x AMQP Própria biblioteca do RabbitMQ Vários exemplos no site oficial Spring AMQP Mesma forma de trabalho simplificada.22 Globalcode – Open4education
  23. 23. Lib Rabbit MQ - Sender import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; public class Send { private final static String QUEUE_NAME = "hello"; public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello World!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println(" [x] Sent " + message + ""); channel.close(); connection.close(); } }23 Globalcode – Open4education
  24. 24. Spring AMQP Demo24 Globalcode – Open4education
  25. 25. Dúvidas? Luciano Davoglio Molinari E-mail: lucmolinari@gmail.com Twitter: @LucMolinarihttp://lucianomolinari.wordpress.com Globalcode – Open4education

×