No RabbitMQ, o stream é uma estrutura de dados não persiste...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E (Errado)
Tema central da questão: A questão aborda o conceito de Streams no RabbitMQ, uma tecnologia fundamental para mensageria e processamento de dados em sistemas distribuídos. Para acertar, é necessário conhecer as estruturas de dados oferecidas pelo RabbitMQ e suas principais características, especialmente em relação à persistência e replicação.
Resumo teórico:
No RabbitMQ, um stream é um tipo de estrutura de dados introduzida para lidar com grandes volumes de mensagens, com persistência e alta performance. Enquanto as filas tradicionais entregam mensagens ponto a ponto, os streams permitem múltiplos consumidores e acesso a mensagens antigas, facilitando cenários de "event sourcing" e processamento assíncrono.
Os streams são persistentes por padrão, ou seja, as mensagens são gravadas em disco. Eles também podem ser replicados para garantir alta disponibilidade, como descrito na documentação oficial do RabbitMQ.
Justificativa da resposta:
A afirmação está errada porque:
- Streams no RabbitMQ são persistentes — ao contrário do que diz o enunciado, eles armazenam as mensagens em disco.
- Os streams podem ser replicados para alta disponibilidade, diferente do que foi informado. A replicação é uma funcionalidade suportada.
Esses pontos tornam a afirmação do enunciado incorreta.
Dicas para concursos:
- Fique atento a palavras como “não persistente” e “não replicado”, pois elas costumam ser usadas como pegadinhas para confundir detalhes técnicos.
- Quando um conceito é novo ou menos tradicional (como streams no RabbitMQ), procure sempre conferir as fontes oficiais e suas características principais.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O RabbitMQ Streams é uma funcionalidade mais recente do RabbitMQ que o aproxima das capacidades de streaming do Kafka. Ele introduz o conceito de streams no RabbitMQ, que são logs de eventos persistentes e replicados, semelhantes aos tópicos do Kafka.
No RabbitMQ, o recurso Streamssão persistentes por padrão
Errado.
Streams no RabbitMQ são persistentes:
- Diferentemente das filas tradicionais, os streams armazenam mensagens de forma persistente em disco;
- São projetados para retenção de mensagens por tempo ou tamanho, permitindo releitura pelos consumidores.
Streams são replicados:
- Os streams suportam replicação entre nós do cluster, aumentando disponibilidade e tolerância a falhas;
- Isso os aproxima conceitualmente de logs distribuídos (como o Kafka).
Diferença real entre stream e fila:
- Fila (queue): consumo destrutivo (a mensagem é removida após o consumo);
- Stream: consumo por offset, permitindo múltiplos consumidores independentes lerem a mesma mensagem.
RabbitMQ Streams (Log Persistente): Lançados em versões mais recentes do RabbitMQ (versão 3.9+), os Streams foram introduzidos para modelar casos de uso focados em telemetria, fluxos contínuos de eventos e retenção de longo prazo. Em vez de operar como uma estrutura volátil, um Stream atua estritamente como um registro imutável em disco (append-only log), garantindo a persistência nativa e robusta dos dados.
Consumo Não Destrutivo (Replay): O grande diferencial de um Stream em relação a uma fila clássica (AMQP) é que, na fila tradicional, a mensagem é apagada permanentemente após o consumidor confirmar o recebimento (consumo destrutivo). No Stream, a leitura não exclui o dado. A mensagem fica armazenada no disco até que o tempo limite de retenção ou o tamanho limite do log sejam atingidos. Isso permite que vários consumidores diferentes leiam a mesma mensagem repetidas vezes, avançando ou retrocedendo a leitura (Replay).
Replicação Nativa (Algoritmo Raft): A assertiva erra frontalmente ao afirmar que os Streams não são replicados. Pelo contrário, eles foram arquitetados com foco em alta disponibilidade e tolerância a falhas distribuídas. Para garantir que os dados não sejam perdidos caso um servidor caia, os Streams utilizam o protocolo de consenso distribuído Raft para replicar os dados de forma idêntica e segura por todos os nós do cluster.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo