SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
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!

Mais conteúdo relacionado

Mais procurados

Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLLeonardo Cezar
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIMatheus Espanhol
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Ad server cassandra
Ad server cassandraAd server cassandra
Ad server cassandradist_bp
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
HTML - HyperText Markup Language - FTP
HTML - HyperText Markup Language - FTPHTML - HyperText Markup Language - FTP
HTML - HyperText Markup Language - FTPIsrael Messias
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLMatheus Espanhol
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerAndré Rocha
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorTiago Dinis
 
Minicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreMinicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreBruno Roldão
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Ismael Stahelin
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorTiago Dinis
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance TuningFernando Ike
 

Mais procurados (19)

Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQL
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarman
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Ad server cassandra
Ad server cassandraAd server cassandra
Ad server cassandra
 
DHCP Failover
DHCP FailoverDHCP Failover
DHCP Failover
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
HTML - HyperText Markup Language - FTP
HTML - HyperText Markup Language - FTPHTML - HyperText Markup Language - FTP
HTML - HyperText Markup Language - FTP
 
HTTP 2
HTTP 2HTTP 2
HTTP 2
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
Minicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreMinicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net Core
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance Tuning
 

Destaque

MongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBMongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBBoxed Ice
 
ESB TOTVS - Integração de Sistemas
ESB TOTVS - Integração de SistemasESB TOTVS - Integração de Sistemas
ESB TOTVS - Integração de SistemasBRAVA Tecnologia
 
Webforum a new phase in construction project collaboration
Webforum   a new phase in construction project collaborationWebforum   a new phase in construction project collaboration
Webforum a new phase in construction project collaborationColin Payne
 
Agropecuaria el alazan de oro
Agropecuaria el alazan de oroAgropecuaria el alazan de oro
Agropecuaria el alazan de orojesuslezama1995
 
HOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdf
HOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdfHOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdf
HOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdfVPRABOGADOS
 
Lenny's Red Letter Day Full Text 5C
Lenny's Red Letter Day Full Text 5CLenny's Red Letter Day Full Text 5C
Lenny's Red Letter Day Full Text 5CCoppell ISD
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...James Titcumb
 
Oestrus ovis parasitologia
Oestrus ovis parasitologiaOestrus ovis parasitologia
Oestrus ovis parasitologiabagachero
 
Monitoramento de containers Docker
Monitoramento de containers DockerMonitoramento de containers Docker
Monitoramento de containers DockerJosé Barbosa
 
Media Science adCuality reporte de la industria publicitaria en Internet en M...
Media Science adCuality reporte de la industria publicitaria en Internet en M...Media Science adCuality reporte de la industria publicitaria en Internet en M...
Media Science adCuality reporte de la industria publicitaria en Internet en M...Media Science
 
Sistema de posicionamiento global (gps) 2003
Sistema de posicionamiento global (gps) 2003Sistema de posicionamiento global (gps) 2003
Sistema de posicionamiento global (gps) 2003miguelvillagra
 

Destaque (20)

MongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBMongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
 
ESB TOTVS - Integração de Sistemas
ESB TOTVS - Integração de SistemasESB TOTVS - Integração de Sistemas
ESB TOTVS - Integração de Sistemas
 
Php e Cassandra
Php e Cassandra Php e Cassandra
Php e Cassandra
 
Webforum a new phase in construction project collaboration
Webforum   a new phase in construction project collaborationWebforum   a new phase in construction project collaboration
Webforum a new phase in construction project collaboration
 
Tarimas ecológicas TECNODECK
Tarimas ecológicas TECNODECKTarimas ecológicas TECNODECK
Tarimas ecológicas TECNODECK
 
Agropecuaria el alazan de oro
Agropecuaria el alazan de oroAgropecuaria el alazan de oro
Agropecuaria el alazan de oro
 
Arte romano
Arte romanoArte romano
Arte romano
 
HOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdf
HOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdfHOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdf
HOJA MEMBRETADA CON AVISO DE PRIVACIDAD VPR ABOGADOS.pdf
 
Lenny's Red Letter Day Full Text 5C
Lenny's Red Letter Day Full Text 5CLenny's Red Letter Day Full Text 5C
Lenny's Red Letter Day Full Text 5C
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
 
Oestrus ovis parasitologia
Oestrus ovis parasitologiaOestrus ovis parasitologia
Oestrus ovis parasitologia
 
Monitoramento de containers Docker
Monitoramento de containers DockerMonitoramento de containers Docker
Monitoramento de containers Docker
 
Media Science adCuality reporte de la industria publicitaria en Internet en M...
Media Science adCuality reporte de la industria publicitaria en Internet en M...Media Science adCuality reporte de la industria publicitaria en Internet en M...
Media Science adCuality reporte de la industria publicitaria en Internet en M...
 
25 alimentos-anti-cancer
25 alimentos-anti-cancer25 alimentos-anti-cancer
25 alimentos-anti-cancer
 
Excel
ExcelExcel
Excel
 
Top 10 Social Media Management Tools - October 2011
Top 10 Social Media Management Tools - October 2011Top 10 Social Media Management Tools - October 2011
Top 10 Social Media Management Tools - October 2011
 
Ir al medico
Ir al medicoIr al medico
Ir al medico
 
Las rutas de la trata personas desde sus víctimas
Las rutas de la trata personas desde sus víctimas Las rutas de la trata personas desde sus víctimas
Las rutas de la trata personas desde sus víctimas
 
Sistema de posicionamiento global (gps) 2003
Sistema de posicionamiento global (gps) 2003Sistema de posicionamiento global (gps) 2003
Sistema de posicionamiento global (gps) 2003
 
Proyecto comunitario
Proyecto comunitarioProyecto comunitario
Proyecto comunitario
 

Semelhante a Tirando o coelho da cartola: integrando sistemas com RabbitMQ

gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?Yago Tomé
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016Alexandre Brandão Lustosa
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebJairo Junior
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebRafael Chagas
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebAlexandre Andrade
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationHelder da Rocha
 

Semelhante a Tirando o coelho da cartola: integrando sistemas com RabbitMQ (20)

gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?
 
Serverless com python
Serverless com pythonServerless com python
Serverless com python
 
Aula2 protocolos
Aula2 protocolosAula2 protocolos
Aula2 protocolos
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Rest
RestRest
Rest
 
Aula1 protocolos
Aula1 protocolosAula1 protocolos
Aula1 protocolos
 
Aula1 protocolos
Aula1 protocolosAula1 protocolos
Aula1 protocolos
 
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da Web
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring Integration
 

Mais de Nelson Senna do Amaral (10)

Veni vedi vici.
Veni vedi vici.Veni vedi vici.
Veni vedi vici.
 
Pague o aluguel
Pague o aluguelPague o aluguel
Pague o aluguel
 
Dando nome aos códigos
Dando nome aos códigosDando nome aos códigos
Dando nome aos códigos
 
Melhorando seu código com Law of Demeter e Tell don't ask
Melhorando seu código com Law of Demeter e Tell don't askMelhorando seu código com Law of Demeter e Tell don't ask
Melhorando seu código com Law of Demeter e Tell don't ask
 
OOP: Princípios e Padroes
OOP: Princípios e PadroesOOP: Princípios e Padroes
OOP: Princípios e Padroes
 
Ruby Gotchas
Ruby GotchasRuby Gotchas
Ruby Gotchas
 
Domínio: Dividir e conquistar
Domínio: Dividir e conquistarDomínio: Dividir e conquistar
Domínio: Dividir e conquistar
 
Interfaces - Como os objetos deveriam se comportar
Interfaces - Como os objetos deveriam se comportarInterfaces - Como os objetos deveriam se comportar
Interfaces - Como os objetos deveriam se comportar
 
Nossa experiência com TDD
Nossa experiência com TDDNossa experiência com TDD
Nossa experiência com TDD
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 

Tirando o coelho da cartola: integrando sistemas com RabbitMQ