Questão nº 67

Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 67)

FGV2024Técnico Judiciário - Desenvolvimento de SistemasTecnologia da Informação
Gabarito: Cver comentário ↓

Adriana está desenvolvendo um sistema assíncrono, que deve receber pacotes de solicitações via mensageria RabbitMQ, e agora precisa definir a lógica de roteamento das mensagens. Foi estabelecido que o nome do exchange será logis, roteando para a fila log_1 com a chave tp1 e para log_2 com a chave de roteamento tp2.
Para criar o exchange e efetuar a ligação com as filas, Adriana utilizou os comandos:

Resposta comentada

Gabarito Alternativa C

O RabbitMQ usa "exchanges" (centrais de troca) para receber mensagens e "roteá-las" para "filas" (caixas de entrada), e o "tipo" do exchange define como esse roteamento acontece. Para rotear mensagens para filas específicas com base em chaves de roteamento exatas, usamos um exchange do tipo "direct".

  • (A) Incorreta: O tipo fanout envia a mensagem para todas as filas conectadas, ignorando a chave de roteamento, o que não atende ao requisito de rotear tp1 para log_1 e tp2 para log_2. Além disso, a sintaxe origin e type=queue para o binding é menos comum ou incorreta para rabbitmqadmin, que usa source e destination_type=queue. Armadilha da banca: O fanout é um tipo de exchange comum, mas inadequado para roteamento baseado em chaves específicas, e a sintaxe do binding está ligeiramente incorreta, tornando-a um distrator tentador.
  • (B) Incorreta: Embora o tipo direct esteja correto, o comando rabbitmqctl connect não é a forma padrão ou correta de criar um binding entre um exchange e uma fila no RabbitMQ; o rabbitmqctl usa bind ou declare binding.
  • (C) Correta: O comando rabbitmqadmin declare exchange name=logis type=direct cria um exchange do tipo direct, que é o ideal para rotear mensagens com base em uma chave de roteamento exata. Os comandos rabbitmqadmin declare binding source=logis routing_key=tp1 destination_type=queue destination=log_1 e rabbitmqadmin declare binding source=logis routing_key=tp2 destination_type=queue destination=log_2 criam as ligações (bindings) corretas, conectando o exchange logis às filas log_1 e log_2 com as respectivas chaves de roteamento tp1 e tp2.
  • (D) Incorreta: O tipo topic usa padrões (*, #) para roteamento, não chaves exatas como tp1 e tp2. Além disso, o comando rabbitmqctl create exchange não é o comando padrão para declarar exchanges; seria rabbitmqctl declare exchange. O comando rabbitmqctl connect também está incorreto para bindings.
  • (E) Incorreta: O tipo fanout está incorreto, pois ignora chaves de roteamento. O comando rabbitmqctl create exchange também está incorreto para declarar exchanges. Embora a sintaxe do rabbitmqadmin declare binding esteja correta, o tipo de exchange e o comando para criá-lo estão errados.

Fonte: FGV TRF1 2024 Técnico Judiciário - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho