5. O que é queue?
• Queue é o termo em inglês para fila
• Fila é o mesmo que vemos no cotidiano (banco,
lotérica, entrada de shows, etc)
• A fila utiliza o conceito de FIFO (First-In-First-Out):
o primeiro a entrar
é o primeiro a sair
6. A fila na vida real
• Como funciona o banco na vida real
• Como seria o banco sem a fila?
7. Motivos para usar fila
• As filas oferecem a possibilidade de:
• Desacoplamento do banco de dados
• Processamento assíncrono
• Distribuição do processamento
• Distribuição para vários receptores
8. O AMQP e o RabbitMQ
• Advanced Message Queuing Protocol (Protocolo de
enfileiramento de mensagens avançado)
• Protocolo que especifica um padrão internacional
para o envio e recebimento de mensagens
• RabbitMQ é um software de código aberto que
implementa o AMQP. Através do RabbitMQ, é possível
criar aplicações que utilizam o envio e recebimento de
mensagens para satisfazer suas necessidades
Cliente chega no banco, entra na fila, cada cliente é direcionado ao caixa vazio quando chega sua vez de ser o primeiro da fila
Pensando em uma estrutura de software, cada caixa deveria saber que está vazio e buscar um cliente que disse que precisava fazer algo. Se não houvesse um cliente no momento, o caixa deveria ficar repetindo o ciclo de buscar o cliente até encontrar um
Tudo depende da necessidade de cada projeto e a correta análise para que sejam levantados todos os prós e contras ao implementar ou não as filas
Um sistema Produtor envia a mensagem diretamente para uma fila, onde um sistema Consumidor recebe a mensagem dessa fila e a consome
Exchange - pode ser comparado com o serviço dos correios, onde a instituição Correio é o “exchange”, que recebe as cartas/mensagens, descobre qual é a área de entrega, e entrega para o carteiro/fila a carta/mensagem, que entrega para o destinatário
Fanout - as mensagens são enviadas apenas uma vez cada uma para o exchange e são replicadas para todas as filas que tiverem ligadas aquele exchange
Direct - através de uma chave de roteamento (routing key), as mensagens são direcionadas específica e diretamente através do exchange somente para a fila que tiver a mesma chave de roteamento dessa mensagem
Topic - através de uma chave de roteamento (routing key), as mensagens são direcionadas para todas as filas que esperam aquela chave ou utilizam os caracteres especiais “*” e “#” para filtrar as mensagens
Header - através de cabeçalhos (headers), ao invés da chave de roteamento (routing key), as mensagens são direcionadas para as filas que utilizam o cabeçalho “x-match” com o valor “any” para receber todas as mensagens em que pelo menos um cabeçalho esteja entre os especificados pela fila, ou o valor “all” para receber todas as mensagens em que todos os cabeçalhos estejam entre os especificados pela fila
Exchange - pode ser comparado com o serviço dos correios, onde a instituição Correio é o “exchange”, que recebe as cartas/mensagens, descobre qual é a área de entrega, e entrega para o carteiro/fila a carta/mensagem, que entrega para o destinatário
Exchange - pode ser comparado com o serviço dos correios, onde a instituição Correio é o “exchange”, que recebe as cartas/mensagens, descobre qual é a área de entrega, e entrega para o carteiro/fila a carta/mensagem, que entrega para o destinatário