O gerenciamento de fila com RabbitMQ

16
O Gerenciamento de fila com RabbitMQ Lucien Carbonare Jospin

Transcript of O gerenciamento de fila com RabbitMQ

Page 1: O gerenciamento de fila com RabbitMQ

O Gerenciamento de fila com RabbitMQLucien Carbonare Jospin

Page 2: O gerenciamento de fila com RabbitMQ

Quem é Lucien Jospin?

➢ Desenvolvimento WEB desde 2006;

➢ Desenvolvimento para sistemas desde 2012

➢ Desenvolvimento Mobile 2015

Page 3: O gerenciamento de fila com RabbitMQ

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

Page 4: O gerenciamento de fila com RabbitMQ

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

Page 5: O gerenciamento de fila com RabbitMQ

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.

Page 6: O gerenciamento de fila com RabbitMQ

ExchangeA exchange é um algorítmo que determina qual fila deve receber a mensagem.

➢ Fanout

➢ Direct

➢ Default

➢ Topic

Page 7: O gerenciamento de fila com RabbitMQ

FanoutEnvia cada mensagem para cada fila ligado ao exchange

Page 8: O gerenciamento de fila com RabbitMQ

Direct Exchange

Chave de roteamento identifica ao exchange a fila que a mensagem deve ir.

Page 9: O gerenciamento de fila com RabbitMQ

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.

Page 10: O gerenciamento de fila com RabbitMQ

Topic Exchange

Usa chaves separadas por um delimitador que deve ser uma lista de palavras, delimitada por pontos. Limitada a 255 bytes

Page 11: O gerenciamento de fila com RabbitMQ

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

Page 12: O gerenciamento de fila com RabbitMQ

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

Page 13: O gerenciamento de fila com RabbitMQ

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.

Page 14: O gerenciamento de fila com RabbitMQ

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

Page 15: O gerenciamento de fila com RabbitMQ

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