Upload
lucien-carbonare-jospin
View
323
Download
0
Embed Size (px)
Citation preview
O Gerenciamento de fila com RabbitMQLucien Carbonare Jospin
Quem é Lucien Jospin?
➢ Desenvolvimento WEB desde 2006;
➢ Desenvolvimento para sistemas desde 2012
➢ Desenvolvimento Mobile 2015
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
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
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.
ExchangeA exchange é um algorítmo que determina qual fila deve receber a mensagem.
➢ Fanout
➢ Direct
➢ Default
➢ Topic
FanoutEnvia cada mensagem para cada fila ligado ao exchange
Direct Exchange
Chave de roteamento identifica ao exchange a fila que a mensagem deve ir.
Default Exchange
Todo exchange deve ter um nome. Caso não haja nome, ela é uma exchange padrão.
➢ Nome da fila como chave de ligação.
Topic Exchange
Usa chaves separadas por um delimitador que deve ser uma lista de palavras, delimitada por pontos. Limitada a 255 bytes
Distribuing
➢ Ideal para processos demorados
➢ Permite ter mais de um consumer para a fila distribuir
➢ Agenda a tarefa para ser executada mais tarde
➢ Não utiliza exchange, distribuindo igualmente
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
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.
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
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
Saiba mais
Link Blog Referências
https://www.rabbitmq.com/
https://access.redhat.com
http://www.gta.ufrj.br
https://github.com/videlalvaro