Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Upcoming SlideShare
Loading in...5
×
 

Tirando o coelho da cartola: integrando sistemas com RabbitMQ

on

  • 805 views

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

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

Statistics

Views

Total Views
805
Views on SlideShare
804
Embed Views
1

Actions

Likes
7
Downloads
9
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

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

Tirando o coelho da cartola: integrando sistemas com RabbitMQ Tirando o coelho da cartola: integrando sistemas com RabbitMQ Presentation Transcript

  • Tirando o coelho da cartola Integrando sistemas com RabbitMQ
  • Quem sou eu ❖ Programador PHP! ❖ Twitter: @nelson_senna! ❖ Blog: http://nelsonsar.github.io
  • Por que integrar?
  • Como podemos integrar sistemas?
  • Opções conhecidas ❖ Integração com arquivos;! ❖ Banco de dados compartilhado;! ❖ Remote Procedure Call (RPC);
  • 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.
  • 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”;
  • 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…);
  • É… E…? Fodeu, então?
  • Não !Ép ra is que so eu e stou aqu i!
  • Mensagens ❖ Acoplamento entre as aplicações tendendo a zero;! ❖ Mecanismo de “retry”;! ❖ Assíncrono;! ❖ RabbitMQ!
  • Por que o RabbitMQ?
  • ❖ 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;
  • E como funciona?
  • Protocolo AMQP RabbitMQ binding mensagem Producer Exchange mensagem Queue Consumer resposta
  • AMQP: Componentes ❖ Exchanges;! ❖ Message Queues (Filas);! ❖ Bindings;! ❖ Channel (Canal);! ❖ Virtual Hosts;
  • Exchange?
  • Exchanges padrão ❖ Default;! ❖ Direct;! ❖ Fanout;! ❖ Topic;! ❖ Headers;
  • Default exchange ❖ Otimização no código do RabbitMQ (mais rápida que as demais);! ❖ Útil para pequenas aplicações;
  • Direct exchange 1 : key _key ng q1 i rout exchange routing_key: key2 q2 rou ting _ke y: k ey3 q3
  • Fanout exchange q1 exchange q2 q3
  • Topic exchange
  • Headers exchange ❖ Direct exchanges with lasers;! ❖ Mais de um critério para encaminhamento;
  • E a fila faz o que?
  • Propriedades da fila ❖ Exclusiva ou compartilhada;! ❖ Durável ou temporária;! ❖ Nomeada pelo cliente ou pelo servidor;
  • E como o exchange sabe para qual fila entregar a mensagem?
  • Bindings ligam exchanges às filas!
  • Posso ter várias conexões ao mesmo tempo?
  • Claro! Os canais possibilitam isso!
  • É, mas, se eu tiver que ter uma instância do RabbitMQ para cada uma das minhas aplicações vai ficar complicado de gerenciar…
  • É… vai mesmo…
  • Sorte que não precisa! Você pode ter vários virtual hosts, uma para cada aplicação!
  • Falou de tudo, menos de mensagem…
  • 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”.
  • Ótimo! Agora só falta me provar que é fácil de usar, né?
  • Criando seu producer
  • Criando seu consumer
  • Fácil, hã?
  • Dúvidas?
  • Muito obrigado!