Palestra apresentada na PHPConference SP 2015. Para complementar o estudo pode-se ver a série de artigos no blog sobre o RabbitMQ: http://infojosp.blogspot.com/2015/11/rabbitmq-conceitos-iniciais.html
2. Quem é Lucien Jospin?
➢Desenvolvimento WEB desde 2006;
➢Desenvolvimento para sistemas desde 2012
➢Desenvolvimento Mobile 2015
3. O que é RabbitMQ
➢ Gerenciador de fila: funciona como um intermediário garantindo a
entrega;
➢ Desenvolvido Earland
➢ Mensageria: Sistema que troca mensagem (message) broker
➢ Fila = Buffer que armazena para ser consumida
➢ AMPQ (Advanced Message Queuing Protocol)
○ Protocolo de comunicação de rede
○ Unificar tecnologias
4. Transmissão - Passos
➢ Create: Remetente cria a mensagem;
➢ Send: Adiciona ao canal;
➢ Deliver: Move do remetente e disponibiliza ao
receptor;
➢ Receive: Receptor da mensagem;
➢ Process: Extrai os dados da mensagem;
Cada sistema tem sua responsabilidade.
Responsabilidades definidas = reutilização
5. Estrutura base Rabbit
➢ Producer: Envia a mensagem;
➢ Queue: É um buffer que armazena as mensagens;
➢ Consumer: Um sistema para receber as mensagens;
➢ Exchange: Recebe a mensagem e entrega a fila;
➢ ACK (acknowledgments)
A Ideia central é que nenhum producer envie diretamente para a
fila sempre tenha a exchange gerenciando a entrega para a fila,
e ela saiba exatamente para qual fila entregar.
6. Exchange
A exchange é um algorítmo que determina qual fila deve
receber a mensagem.
➢Fanout
➢Direct
➢Default
➢Topic
12. Sending to many
➢Entrega o trabalho a vários
consumers
➢As mensagens serão
direcionadas a todos as filas,
e cada um exercerá sua
tarefa à sua maneira.
➢Este é um modelo completo
producer; queue e consumers
com exchange gerenciando
➢Algoritmo fanout All for All
13. Routing
➢Pelo parâmetro routing_key a
exchange sabe para qual fila
deve enviar.
➢Algoritmo direct.
➢Permite mais liberdade para
os consumers trabalharem de
forma específica.
14. Topics
➢Permite o roteamento com
critério variado
➢Utiliza o algoritmo topic
➢A routing key deve ser uma
de uma lista de palavras
delimitadas por ponto.
➢Uma chave entrega para
todas as filas relacionadas.
➢* 1 palavra # 1 ou mais
palavras
15. Remote
procedure
➢O Producers envia para a fila
e o consumers responde para
outra fila
➢Parâmetro reply_to
determina para onde retorna
➢Parâmetro correlation_id
identifica a resposta como
sendo do mesmo pedido
16. Saiba mais
Link Blog Referências
https://www.rabbitmq.com/
https://access.redhat.com
http://www.gta.ufrj.br
https://github.com/videlalvaro