SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
Filas e Mensageria com
RabbitMQ
por Daniel Archer
Daniel Archer
● Sou formado em Análise de Sistemas
● Desenvolvedor PHP há 7 anos
● Participante PHPRS
● Trabalho na KingHost
● Arqueiro nas horas vagas (ah, sério? sim sério)
Zend Certified PHP 5.5
Daniel Archer
● Sou formado em Análise de Sistemas
● Desenvolvedor PHP há 7 anos
● Participante PHPRS
● Trabalho na KingHost
● Arqueiro nas horas vagas (ah, sério? sim sério)
Zend Certified PHP 5.5
Entendendo como funciona
Mensageria
Publisher / Subscriber
Subscriber 1
Publisher Queue
(Fila)
Subscriber 2
Por que usar?
Principais benefícios dessa técnica
Motivos
Comunicação entre servidores e
microsserviços
Transmitir Informações de X para Y
Motivos
Melhoria na performance, removendo
processos pesados da aplicação
Processamento Assíncrono
Comunicação entre servidores e
microsserviços
Transmitir Informações de X para Y
Motivos
Melhoria na performance, removendo
processos pesados da aplicação
Processamento Assíncrono
Possibilidade de escalar facilmente
processos com maior demanda
Escalabilidade
Comunicação entre servidores e
microsserviços
Transmitir Informações de X para Y
Opções do MercadoQuais são as atuais opções de
Message Brokers disponíveis?
(Java)
(Java)
Pub/Sub
(Java)
Brokerless
PerformanceSó para termos uma ideia
Comparativo
Receiver Sender Latency
25.000 msg/s 25.000 msg/s ~200ms
75.000 msg/s 90.000 msg/s ~300ms
180.000 msg/s 180.000 msg/s 0.3ms
600.000 msg/s 5.000.000 msg/s ~120ms
Ref: http://www.bravenewgeek.com/dissecting-message-queues/
Simples, Rápido e Completo
Principais Entidades
Faz a ligação entre os
Exchanges e as Filas
Bindings
Palavra chave que será
utilizada para roteamento
da Mensagem
Route Keys
Responsáveis por receber
as mensagens e enviar
para as filas
Exchanges
Local de armazenamento
das mensagens
Queues
Ref: https://www.cloudamqp.com/blog/2015-09-03-part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html
Na Prática...
Rotina simples de Envio e Recebimento de
mensagens em PHP
Simple Message
Roteando mensagens para várias filas
Exchanges Types
FanOut
Exchange
Logs
(fanout)
Fila1
Fila2
Fila3
FanOut
Exchange
Logs
(fanout)
Fila1
Fila2
Fila3
FanOut
Exchange
Logs
(fanout)
Arquivo
LogStash
EmailAlert
FanOut
Exchange
Logs
(fanout)
Arquivo
LogStash
EmailAlert
Auditoria
Direct
Exchange
Images
(Direct)
images.archive
archiver1
Direct
Exchange
Images
(Direct) cropper
resizer
images.crop
images.resize
images.archive
archiver1
Direct
Exchange
Images
(Direct) cropper
resizer
images.archive
images.crop
images.resize
images.archive
archiver1
archiver2
Topic
Exchange
Logs
(Topic)
{aplicação} . {dispositivo} . {level}
Topic
Exchange
Logs
(Topic)
* . web . *
Fila1
Topic
Exchange
Logs
(Topic) Fila3
* . * . debug
* . web . *
Fila1
Topic
Exchange
Logs
(Topic) Fila3
unipago . #
* . * . debug
* . web . *
Fila1
Fila2
Topic
Exchange
Logs
(Topic) Fila3
Fila4
unipago . #
* . * . debug
unipago . mobile . *
* . web . *
Fila1
Fila2
Em disco ou em memoria?
Persistence vs Durability
Persistence vs Durability
Pode ser durável ou não.
Será deletada após restart do servidor
Fila (Queue)
Pode ser durável ou não.
Será deletado após restart do servidor
Exchange
Pode ser persistente (escrita em disco)
Mensagem
A Mensagem deve ser Persistente
Estar em uma Fila Durável
Ligada a um Exchange Durável
Como garantir?
Recapitulando!
Mensageria
1. Fácil comunicação entre sistemas
2. RabbitMq não é o mais rápido, mas é
suficiente
3. Filas podem ser dinâmicas ou não
4. Vários consumers, várias linguagens
5. Exchange são roteadores, enviando
mensagens para várias filas/exchanges
6. Persistência de Mensagens vs performance
7. Call me Archer!
Obrigado!
Perguntas?
Após a palestra, estarei no estande da KingHost
para tirar dúvidas!

Más contenido relacionado

La actualidad más candente

Sistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareSistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Adriano Teixeira de Souza
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 

La actualidad más candente (20)

HTTP/2 for Developers
HTTP/2 for DevelopersHTTP/2 for Developers
HTTP/2 for Developers
 
Rabbit MQ introduction
Rabbit MQ introductionRabbit MQ introduction
Rabbit MQ introduction
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
 
API Integration For Building Software Applications Powerpoint Presentation Sl...
API Integration For Building Software Applications Powerpoint Presentation Sl...API Integration For Building Software Applications Powerpoint Presentation Sl...
API Integration For Building Software Applications Powerpoint Presentation Sl...
 
Hornet - 1.Conceitos de Mensageria
Hornet - 1.Conceitos de MensageriaHornet - 1.Conceitos de Mensageria
Hornet - 1.Conceitos de Mensageria
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 
Arquitetura hexagonal
Arquitetura hexagonalArquitetura hexagonal
Arquitetura hexagonal
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and Microservices
 
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareSistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – Middleware
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
 
Scalable Service-Oriented Middleware over IP
Scalable Service-Oriented Middleware over IPScalable Service-Oriented Middleware over IP
Scalable Service-Oriented Middleware over IP
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Estaleiro o uso de kubernetes no serpro
Estaleiro   o uso de kubernetes no serproEstaleiro   o uso de kubernetes no serpro
Estaleiro o uso de kubernetes no serpro
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agileday
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
OpenShift Introduction
OpenShift IntroductionOpenShift Introduction
OpenShift Introduction
 
Micro services vs Monolith Architecture
Micro services vs Monolith ArchitectureMicro services vs Monolith Architecture
Micro services vs Monolith Architecture
 

Similar a Filas e mensageria com RabbitMQ

Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
Eric Lemes
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
Ricardo Guerra Freitas
 
Implementando, Administrando e Gerenciando o Microsoft Office Communications ...
Implementando, Administrando e Gerenciando o Microsoft Office Communications ...Implementando, Administrando e Gerenciando o Microsoft Office Communications ...
Implementando, Administrando e Gerenciando o Microsoft Office Communications ...
brunoestrozi
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
Markus Christen
 
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SPArquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
melidevelopers
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
taniamaciel
 

Similar a Filas e mensageria com RabbitMQ (20)

Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e ProtocolosMVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
 
Roadshow TOTVS RM 2010 v.11.0
Roadshow TOTVS RM 2010 v.11.0Roadshow TOTVS RM 2010 v.11.0
Roadshow TOTVS RM 2010 v.11.0
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Implementando, Administrando e Gerenciando o Microsoft Office Communications ...
Implementando, Administrando e Gerenciando o Microsoft Office Communications ...Implementando, Administrando e Gerenciando o Microsoft Office Communications ...
Implementando, Administrando e Gerenciando o Microsoft Office Communications ...
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Webservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPWebservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHP
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SPArquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
 
API's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoAPI's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de Integração
 
Livro cisco
Livro ciscoLivro cisco
Livro cisco
 
FISL8 - Aplicações Livres para Gerenciamento de Redes e Serviços
FISL8 - Aplicações Livres para Gerenciamento de Redes e ServiçosFISL8 - Aplicações Livres para Gerenciamento de Redes e Serviços
FISL8 - Aplicações Livres para Gerenciamento de Redes e Serviços
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
Um Mecanismo de Autenticação Baseado em ECDH para Redes
Um Mecanismo de Autenticação Baseado em ECDH para Redes Um Mecanismo de Autenticação Baseado em ECDH para Redes
Um Mecanismo de Autenticação Baseado em ECDH para Redes
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 

Más de Daniel Archer Marques Cramer

Más de Daniel Archer Marques Cramer (11)

Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
 
Over engineering
Over engineeringOver engineering
Over engineering
 
Frameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghostFrameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghost
 
Case Kinghost + Elasticsearch
Case Kinghost + ElasticsearchCase Kinghost + Elasticsearch
Case Kinghost + Elasticsearch
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
Php on the cloud
Php on the cloudPhp on the cloud
Php on the cloud
 
PHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHPPHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHP
 
PHP Além da universidade
PHP Além da universidadePHP Além da universidade
PHP Além da universidade
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 

Último

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Filas e mensageria com RabbitMQ