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,506