Este documento fornece uma introdução sobre mensageria, comparando e contrastando JMS e AMQP. Resume os principais modelos de mensageria como point-to-point e publish-subscribe e discute as vantagens do AMQP sobre o JMS, incluindo interoperabilidade e padronização ao nível do protocolo. Também apresenta RabbitMQ como uma implementação popular de AMQP.
Apresentação sobre tecnologias para integração de sistemas em Java e JMS assíncrono.
Além de descrição, benefícios, desvantagens e cenário aplicável para cada tecnologia, no final há links para o código-fonte da implementação de JMS assíncrono.
Apresentação sobre tecnologias para integração de sistemas em Java e JMS assíncrono.
Além de descrição, benefícios, desvantagens e cenário aplicável para cada tecnologia, no final há links para o código-fonte da implementação de JMS assíncrono.
Nessa palestra serão apresentados os principais tópicos para desenvolvimento de aplicações escaláveis em Python, será dada uma breve introdução ao uso de mult-thread, mult-processos, Broker, bancos de dados em memória e Celery. Será mostrado quando usar cada tecnologia e exemplos de código.
Nessa palestra serão apresentados os principais tópicos para desenvolvimento de aplicações escaláveis em Python, será dada uma breve introdução ao uso de mult-thread, mult-processos, Broker, bancos de dados em memória e Celery. Será mostrado quando usar cada tecnologia e exemplos de código.
1. Trilha – Java EE
Java e AMQP: Uma alternativa ao JMS
Luciano Davoglio Molinari
lucmolinari@gmail.com
@LucMolinari
http://lucianomolinari.wordpress.com
Globalcode – Open4education
2. Agenda
Mensageria
Modelos
JMS
AMQP
AMQP x JMS
Rabbit MQ
Integração Java x AMQP (Demo)
2 Globalcode – Open4education
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
5. Mensageria
Escreve Recebe
Sistema A Mensagem MOM Sistema B
Mensagem
5 Globalcode – Open4education
6. Mensageria - Restrições
Novo componente na arquitetura (MOM)
Nativamente assíncrono
Mais de 1 padrão (JMS, MSMQ, AMQP)
6 Globalcode – Open4education
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 N
7 Globalcode – Open4education
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ópico
8 Globalcode – Open4education
9. JMS (Java Message Service)
Especificação madura/conceituada
Primeiro padrão apoiado por grandes players
Point-to-point/Publish-subscribe
Baixa curva de aprendizado
9 Globalcode – Open4education
10. JMS - Restrições
Padroniza somente a API
Cada implementação define seu próprio protocolo
Interoperabilidade dentro da plataforma Java
10 Globalcode – Open4education
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.0
11 Globalcode – Open4education
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
Broker
13 Globalcode – Open4education
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
Broker
15 Globalcode – Open4education
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
Broker
16 Globalcode – Open4education
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
Broker
17 Globalcode – Open4education
18. Header Exchange
Parecido com Topic Exchange
Não suporta routing key
Roteamento é feito através de atributos do cabeçalho (header)
Menos usado
18 Globalcode – Open4education
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 mensagem
19 Globalcode – Open4education
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. 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. 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