Filas e Mensageria
O que é e como utilizar
Marcela Godoy
InterCon 2018
Marcela Godoy
Software Engineer @ PayCertify
Coorganizadora do PHPSP Campinas
Mentora de Mulheres na Tecnologia
❤️📖☕
& Coxinha de Jaca
@magodoy88
Comunicação
Destinatário
Remetente
Mensagem
-
Confirmar chegada;
-
Resposta única;
-
Múltiplas respostas.
Nosso modelo de comunicação é muito semelhante com a comunicação das aplicações que criamos.
Client
Server
Request
Response
"Síncrono e Assíncrono são termos referentes ao fluxo de uma aplicação"
Síncrono
Comprar um ingresso
Enviar confirmação
Processar pagamento
Enviar o ingresso
Assíncrono
Comprar um ingresso
Enviar confirmação
Processar pagamento
Enviar o ingresso
Publisher
Message Broker
Consumer
Uma nova forma de se comunicar...
(remetente)
(destinatário)
Mas... porque?
Comunicação facilitada entre servidores e microsserviços
Melhoria de performance com processamento assíncrono
Escalabilidade e desacoplamento facilitados
De que se alimenta?
Message Broker
O que é?
Onde vive?
Open Source
AMQP
Advanced Message Queuing Protocol
Interoperabilidade entre serviços
Define os padrões da mensagem
Broker
Exchange
Virtual Host
Queue
Binding
Channel
Consumer
Publisher
Ciclo completo da mensagem
Esse tal
de
RabbitMQ
Open Source
Escrito em Erlang
Grande confiabilidade em sistemas distribuídos
Roda em diversos sistemas operacionais e linguagens
Possui muitos plugins
Topologias
Standalone
Cluster
Topologias
Federation
Instalação
&
Config
O que instalaremos?
* Instalação do RabbitMQ
(Server)
* Instalação do Painel de Gerenciamento
(Plugin)
* Configurações de virtual host e usuário
Mais infos em: http://www.rabbitmq.com/download.html
Acesso em http://<localhost>:15672
Painel de gerenciamento
Configurações de usuário
Nós ❤️ todas as linguagens...
... Mas...
... Nós ❤️❤️❤️❤️PHP!
Criando um Publisher
Utilize a sua linguagem preferida. Vai ter uma lib para ela!
Cria conexão e um channel
Cria sua mensagem e manda pro exchange =)
Criando um Publisher
Queue_declare ( )
'Name' - Nome da fila
'Durable' - Sobreviveremos ao restart?
Criando um Publisher
Queue_declare ( )
'Auto_delete' - O que será de nós após a ultima mensagem?
'Nowait' - Devemos esperar por resposta?
Criando um Consumer
Não esquece da conexão e canal!
Vamos consumir os itens da fila
Enquanto isso, no message broker...
A escolha de um exchange
Declaração do Exchange
Fanout Exchange
Exchange
Queues
Direct Exchange
Exchange
Queues
Archive
Crop
Resize
Topic Exchange
Exchange
Queues
*.web
*.log
Headers Exchange
Exchange
Queues
Archive
Crop
Resize
Utilize as informações do header como routing key
Algumas soluções interessantes...
Dead Letter
Exchange
Publisher
Queue
Consumer
Exchange
Reject Queue
Multi-propósito
Exchange
Publisher
Queue
Consumer
Queue
Queue
Cloud
DB
Delayed Message
Exchange
Publisher
Delay Queue
Exchange
Queue
Para saber mais...
http://www.rabbitmq.com/getstarted.html
#Obrigada
Dev PHP ou Ruby?
Temos vagas!
#FalaComigo
#MandaOi
@magodoy88
helloworld@marcelagodoy.net
Filas e Mensageria @InterCon2018
By Marcela Godoy Cruz
Filas e Mensageria @InterCon2018
- 1,410