Tirando o coelho da cartola: integrando sistemas com RabbitMQ

1.939 visualizações

Publicada em

View of AMQP protocol in details and how to use PECL AMQP library to send and consume messages using RabbitMQ.

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

Sem downloads
Visualizações
Visualizações totais
1.939
No SlideShare
0
A partir de incorporações
0
Número de incorporações
15
Ações
Compartilhamentos
0
Downloads
19
Comentários
0
Gostaram
8
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tirando o coelho da cartola: integrando sistemas com RabbitMQ

  1. 1. Tirando o coelho da cartola Integrando sistemas com RabbitMQ
  2. 2. Quem sou eu ❖ Programador PHP! ❖ Twitter: @nelson_senna! ❖ Blog: http://nelsonsar.github.io
  3. 3. Por que integrar?
  4. 4. Como podemos integrar sistemas?
  5. 5. Opções conhecidas ❖ Integração com arquivos;! ❖ Banco de dados compartilhado;! ❖ Remote Procedure Call (RPC);
  6. 6. Integração com arquivos ❖ Formatos que tem suporte para múltiplas linguagens e múltiplas plataformas (CSV, JSON, XML, etc);! ❖ Fraco acoplamento entre sistemas que precisam ser integrados;! ❖ Nome, tempo de atualização e remoção precisam ser acordados entre as aplicações;! ❖ Implementação de como processar o arquivo em cada aplicação;! ❖ Concorrência leitura e escrita;! ❖ Aplicações acessando o mesmo disco ou transferência de arquivos entre discos;! ❖ Alta probabilidade dos sistemas ficarem fora de sincronia e de conflitos de dados.
  7. 7. Banco de dados compartilhado ❖ Consistência entre os dados;! ❖ Concorrência feita através do sistema de transação do banco de dados;! ❖ Uso da linguagem SQL para integração;! ❖ Estrutura que satisfaça todas as aplicações envolvidas na integração;! ❖ Distribuir o banco de dados;! ❖ Performance prejudicada devido a vários “locks”;! ❖ “Deadlock”;
  8. 8. Remote Procedure Call (RPC) ❖ Permite a construção de aplicações responsáveis pelos dados que elas mantém;! ❖ Capacidade de prover múltiplas interfaces para um mesmo dado;! ❖ Produz acoplamento entre as aplicações envolvidas na integração;! ❖ Requisições síncronas (Não necessariamente…);
  9. 9. É… E…? Fodeu, então?
  10. 10. Não !Ép ra is que so eu e stou aqu i!
  11. 11. Mensagens ❖ Acoplamento entre as aplicações tendendo a zero;! ❖ Mecanismo de “retry”;! ❖ Assíncrono;! ❖ RabbitMQ!
  12. 12. Por que o RabbitMQ?
  13. 13. ❖ Fácil de instalar;! ❖ Fácil de monitorar;! ❖ Fácil de usar;! ❖ “Clustering” dinâmico, fácil de criar e manter;! ❖ Documentação excelente;! ❖ Utiliza o protocolo AMQP e não o utiliza quando o assunto é performance;! ❖ Plugins;! ❖ Extensão PECL e phpamqp-lib;! ❖ Open source;! ❖ Suporte comercial;
  14. 14. E como funciona?
  15. 15. Protocolo AMQP RabbitMQ binding mensagem Producer Exchange mensagem Queue Consumer resposta
  16. 16. AMQP: Componentes ❖ Exchanges;! ❖ Message Queues (Filas);! ❖ Bindings;! ❖ Channel (Canal);! ❖ Virtual Hosts;
  17. 17. Exchange?
  18. 18. Exchanges padrão ❖ Default;! ❖ Direct;! ❖ Fanout;! ❖ Topic;! ❖ Headers;
  19. 19. Default exchange ❖ Otimização no código do RabbitMQ (mais rápida que as demais);! ❖ Útil para pequenas aplicações;
  20. 20. Direct exchange 1 : key _key ng q1 i rout exchange routing_key: key2 q2 rou ting _ke y: k ey3 q3
  21. 21. Fanout exchange q1 exchange q2 q3
  22. 22. Topic exchange
  23. 23. Headers exchange ❖ Direct exchanges with lasers;! ❖ Mais de um critério para encaminhamento;
  24. 24. E a fila faz o que?
  25. 25. Propriedades da fila ❖ Exclusiva ou compartilhada;! ❖ Durável ou temporária;! ❖ Nomeada pelo cliente ou pelo servidor;
  26. 26. E como o exchange sabe para qual fila entregar a mensagem?
  27. 27. Bindings ligam exchanges às filas!
  28. 28. Posso ter várias conexões ao mesmo tempo?
  29. 29. Claro! Os canais possibilitam isso!
  30. 30. É, mas, se eu tiver que ter uma instância do RabbitMQ para cada uma das minhas aplicações vai ficar complicado de gerenciar…
  31. 31. É… vai mesmo…
  32. 32. Sorte que não precisa! Você pode ter vários virtual hosts, uma para cada aplicação!
  33. 33. Falou de tudo, menos de mensagem…
  34. 34. AMQP: Mensagens ❖ Criadas pelo “producer”;! ❖ Roteadas pelo exchange e entregues às filas (ou não…);! ❖ Filas encaminham a mensagem aos “consumers”;! ❖ Podem ser persistidas em disco (Mas, você não vai querer fazer isso…);! ❖ Podem ser aceitas ou rejeitadas pelo “consumer”.
  35. 35. Ótimo! Agora só falta me provar que é fácil de usar, né?
  36. 36. Criando seu producer
  37. 37. Criando seu consumer
  38. 38. Fácil, hã?
  39. 39. Dúvidas?
  40. 40. Muito obrigado!

×