BACKEND30 perguntas • ~12 min
Quiz de Conceitos de RabbitMQ
Teste seu entendimento sobre exchanges, routing keys e filas no RabbitMQ.
Quiz de Conceitos de RabbitMQ
Teste seu entendimento sobre exchanges, routing keys e filas no RabbitMQ.
1. O que é o RabbitMQ?
- Um sistema de gerenciamento de banco de dados relacional
- Um message broker AMQP de código aberto
- Um gateway de API REST
- Um armazenamento chave-valor distribuído
2. Em um fluxo de mensagens típico do RabbitMQ, qual é a ordem correta dos componentes?
- Consumidor → Fila → Exchange → Produtor
- Produtor → Fila → Exchange → Consumidor
- Produtor → Exchange → Fila → Consumidor
- Exchange → Produtor → Fila → Consumidor
3. O que é uma binding (ligação) no RabbitMQ?
- Uma conexão TCP entre dois brokers
- Uma regra que vincula uma exchange a uma fila (ou a outra exchange)
- A credencial de autenticação utilizada por um produtor
- Uma referência nomeada para um virtual host
4. Qual é a exchange padrão (default exchange) no RabbitMQ?
- Uma exchange fanout chamada 'default'
- Uma exchange direct pré-declarada com nome de string vazia
- Uma exchange topic chamada 'amq.default'
- Uma exchange headers que precisa ser declarada antes do uso
5. Qual é a diferença entre uma fila durável (durable) e uma fila transitória (transient)?
- Filas duráveis sobrevivem a reinicializações do broker; filas transitórias não
- Filas duráveis são mais rápidas; filas transitórias são mais lentas
- Filas duráveis comportam mais mensagens do que filas transitórias
- Filas duráveis exigem autenticação; filas transitórias não
6. O que um consumidor envia ao RabbitMQ para confirmar que processou uma mensagem com sucesso?
- Um NACK
- Um REJECT
- Um ACK (acknowledgement)
- Um CONFIRM
7. Qual é a diferença entre basic.nack e basic.reject no RabbitMQ?
- basic.nack suporta rejeição em lote de múltiplas mensagens; basic.reject trata apenas uma mensagem por vez
- basic.reject reenfileira a mensagem; basic.nack a descarta permanentemente
- basic.nack está disponível apenas no AMQP 1.0; basic.reject pertence ao AMQP 0-9-1
- Não há diferença funcional
8. Qual plugin nativo do RabbitMQ fornece um painel de gerenciamento e monitoramento no navegador?
- rabbitmq_shovel
- rabbitmq_management
- rabbitmq_federation
- rabbitmq_stomp
9. O que a configuração de prefetch count (basic.qos) controla no RabbitMQ?
- O número máximo de filas que um canal pode assinar
- O número máximo de mensagens não confirmadas entregues a um consumidor por vez
- O tamanho máximo da mensagem em bytes
- O número máximo de conexões por virtual host
10. Por que o RabbitMQ geralmente é preferido em relação a um banco de dados relacional para fluxos de fila de tarefas?
- O RabbitMQ armazena mensagens em tabelas SQL facilitando consultas
- O RabbitMQ oferece entrega nativa por push, confirmações e back-pressure sem polling
- Um banco de dados não consegue persistir dados após reinicializações
- O RabbitMQ gera esquemas SQL automaticamente para metadados de tarefas
11. Como uma exchange direct roteia mensagens?
- Ela transmite a mensagem para todas as filas vinculadas, independentemente da routing key
- Ela roteia a mensagem para filas cuja binding key corresponda exatamente à routing key da mensagem
- Ela utiliza atributos do cabeçalho da mensagem para decidir o roteamento
- Ela roteia com base em padrões de caracteres coringa na binding key
12. Qual é o comportamento definidor de uma exchange fanout?
- Ela roteia mensagens apenas para filas cuja binding key corresponda à routing key
- Ela transmite toda mensagem para todas as filas vinculadas, ignorando completamente a routing key
- Ela roteia mensagens usando padrões coringa (* e #)
- Ela envia mensagens apenas para filas no mesmo nó
13. Na binding key de uma topic exchange, o que o caractere coringa '#' casa?
- Exatamente uma palavra separada por ponto
- Qualquer caractere individual
- Zero ou mais palavras separadas por ponto
- Apenas caracteres numéricos
14. Como uma headers exchange decide quais filas recebem uma mensagem?
- Ela compara a routing key da mensagem com coringas presentes na binding key
- Ela ignora completamente as routing keys e roteia com base em atributos do cabeçalho da mensagem que correspondam aos argumentos da binding
- Ela distribui as mensagens em round-robin entre todas as filas vinculadas
- Ela roteia com base no tipo de conteúdo (content-type) do corpo da mensagem
15. Qual é a diferença conceitual entre uma routing key e uma binding key no RabbitMQ?
- Elas são idênticas: ambos os termos referem-se à mesma string definida pelo produtor
- A routing key é definida pelo produtor na mensagem; a binding key é definida quando uma fila é vinculada a uma exchange
- A binding key é definida pelo produtor; a routing key é definida na fila
- Routing keys são usadas apenas por direct exchanges; binding keys são usadas apenas por topic exchanges
16. Como uma Dead Letter Exchange (DLX) é configurada em uma fila?
- Definindo o argumento 'x-dead-letter-exchange' ao declarar a fila
- Publicando diretamente em uma exchange chamada 'dlx'
- Ativando o plugin rabbitmq_dlx
- Definindo a propriedade 'dead-letter' em cada mensagem individualmente
17. Qual é a diferença entre definir o TTL da mensagem por fila versus por mensagem?
- O TTL por fila aplica-se a todas as mensagens da fila via x-message-ttl; o TTL por mensagem é definido na propriedade expiration da mensagem e pode variar a cada uma
- O TTL por mensagem sempre tem maior prioridade e substitui qualquer TTL da fila
- O TTL por fila requer um plugin; o TTL por mensagem é nativo
- Não há diferença: ambos provocam comportamento idêntico no broker
18. Qual é a principal vantagem dos publisher confirms em comparação com transações AMQP (tx.select/tx.commit) no RabbitMQ?
- Publisher confirms são síncronos e bloqueiam o canal até que o broker confirme
- Publisher confirms fornecem confirmação assíncrona e leve sem a pesada sobrecarga de two-phase commit das transações
- Transações AMQP suportam confirmações em lote; publisher confirms não suportam
- Publisher confirms estão disponíveis apenas para quorum queues
19. Qual é a finalidade principal do plugin Shovel do RabbitMQ?
- Espelhar filas entre nós do cluster para alta disponibilidade
- Mover ou copiar mensagens de forma confiável de uma fila/exchange de origem para uma fila/exchange de destino, inclusive entre brokers diferentes
- Expor filas através de uma API REST HTTP
- Comprimir o payload das mensagens antes do armazenamento
20. Qual é a principal diferença arquitetural entre quorum queues e classic mirrored queues?
- Quorum queues usam o algoritmo de consenso Raft para replicação; classic mirrored queues usavam replicação assíncrona mestre-espelho
- Classic mirrored queues são mais rápidas porque usam Raft; quorum queues usam two-phase commit
- Quorum queues só podem existir em um único nó; mirrored queues abrangem todo o cluster
- Não há diferença: quorum queues são apenas o novo nome das mirrored queues
21. Como o AMQP 0-9-1 viabiliza múltiplos fluxos lógicos de comunicação sobre uma única conexão TCP no RabbitMQ?
- Abrindo múltiplos sockets TCP agrupados em um único objeto de conexão
- Por meio de canais: conexões virtuais leves multiplexadas sobre uma única conexão TCP
- Utilizando multiplexação de streams HTTP/2 dentro do framing do AMQP
- Codificando cada fluxo lógico como um virtual host separado
22. O que o mecanismo channel.flow do AMQP 0-9-1 faz?
- Ele aumenta a janela de prefetch dinamicamente quando o consumidor está ocioso
- Ele permite ao broker ou ao cliente pausar/retomar a entrega de mensagens em um canal para exercer back-pressure
- Ele migra um canal de uma conexão TCP para outra sem interrupção
- Ele descarrega em disco todas as mensagens pendentes do buffer interno de um canal
23. Qual é o principal benefício operacional de declarar uma fila como lazy queue?
- Lazy queues ignoram o processamento de confirmações (ACKs) para elevar a vazão
- Lazy queues gravam mensagens diretamente em disco assim que chegam em vez de mantê-las na memória, reduzindo o consumo de RAM em filas grandes
- Lazy queues replicam em disco apenas quando o nó reinicia
- Lazy queues adiam a avaliação de bindings até que um consumidor se conecte
24. Qual é a principal diferença arquitetural entre o plugin Federation e o plugin Shovel?
- Links do Federation são permanentes; links do Shovel são temporários e se autoexcluem após uma única mensagem
- O Federation oferece vinculação fracamente acoplada de exchange/fila entre brokers com nós autônomos; o Shovel é um transportador simples ponto a ponto de mensagens que exige acoplamento direto
- O Shovel suporta AMQP 1.0; o Federation suporta apenas AMQP 0-9-1
- Eles são funcionalmente idênticos: Federation é apenas o nome mais novo do Shovel
25. O que o plugin consistent hash exchange realiza que uma exchange direct ou topic padrão não consegue?
- Ele roteia mensagens para exatamente uma fila escolhida por hash consistente da routing key, distribuindo a carga enquanto mantém mensagens com a mesma chave na mesma fila
- Ele replica mensagens para todas as filas vinculadas usando um mecanismo de desduplicação baseado em hash
- Ele calcula o hash do corpo da mensagem para verificar a integridade antes do roteamento
- Ele garante a entrega em round-robin entre as filas, independentemente da routing key
26. Em um cluster RabbitMQ, qual é a diferença funcional entre nós de disco (disc nodes) e nós de memória (RAM nodes)?
- Nós de disco persistem metadados do broker (filas, exchanges, bindings, usuários) no disco; nós de RAM mantêm os metadados apenas na memória para gravações com menor latência
- Nós de RAM cuidam do roteamento de mensagens; nós de disco cuidam apenas do armazenamento persistente de mensagens
- Nós de disco podem hospedar quorum queues; nós de RAM não podem
- Os termos estão em desuso: todos os nós modernos do RabbitMQ são idênticos
27. Como as quorum queues utilizam o algoritmo de consenso Raft para garantir a segurança dos dados?
- Uma mensagem só é considerada confirmada após ser gravada por uma maioria (quórum) de réplicas, assegurando ausência de perda de dados mesmo se uma minoria de nós falhar
- O Raft é usado apenas para eleição de líder; o armazenamento de mensagens utiliza um protocolo separado de two-phase commit
- Quorum queues gravam em todas as réplicas de forma síncrona e exigem confirmação unânime
- O Raft assegura que as mensagens sejam desduplicadas em todos os nós do cluster
28. Quando tanto uma política por fila quanto um argumento de declaração de fila (ex.: x-message-ttl) são configurados para a mesma chave, qual tem precedência no RabbitMQ?
- Políticas sempre prevalecem sobre argumentos de declaração
- Argumentos de declaração sempre perdem para políticas
- Argumentos de declaração (definidos na criação da fila) têm precedência sobre políticas para a mesma chave
- Ambos são combinados cumulativamente: nenhum sobrepõe o outro
29. Qual par de métricas de gerenciamento do RabbitMQ indica mais diretamente que os consumidores estão ficando para trás em relação aos produtores?
- publish_rate e deliver_rate: quando publish_rate excede deliver_rate de forma constante, messages_ready aumentará
- memory_used e disk_free: um aumento de memory_used com queda de disk_free indica atraso do consumidor
- connection_count e channel_count: excesso de canais indica acúmulo de trabalho nos consumidores
- node_uptime e gc_reclaim_rate: alta atividade do coletor de lixo confirma atraso do consumidor
30. Qual é a abordagem recomendada para o encerramento gracioso (graceful shutdown) de um consumidor no RabbitMQ para evitar perda de mensagens?
- Encerrar o processo imediatamente: o RabbitMQ reenfileirará automaticamente qualquer mensagem sem confirmação
- Cancelar a assinatura do consumidor, terminar o processamento de todas as mensagens em andamento, enviar ACKs ou NACKs para cada uma e fechar o canal e a conexão
- Chamar basic.reject em todas as mensagens e encerrar a conexão TCP sem enviar o frame connection.close
- Definir prefetch para 0 e aguardar o broker esvaziar a fila antes do encerramento
Sobre este quiz
Este quiz interativo foi desenvolvido para oferecer uma experiência dinâmica, rápida e envolvente. Cada pergunta traz alternativas em ordem aleatória, e seu resultado é calculado imediatamente no final. Você pode refazer o teste quantas vezes desejar e compartilhar o resultado com seus amigos!
Destaques do quiz:
- ✓100% gratuito e sem necessidade de cadastro
- ✓Perguntas objetivas com feedback instantâneo
- ✓Gere card personalizado e compartilhe seus resultados
Perguntas frequentes
Ao responder cada pergunta, o sistema calcula automaticamente suas preferências e escolhas para definir seu resultado final de forma precisa e instantânea.