Questão nº 30
Questão de Tecnologia da Informação · FCC TRT19 2022 (nº 30)
Considere que, no ambiente de mensageria da Plataforma Digital do Poder Judiciário PDPJ-Br, os serviços se comunicam entre si por meio de troca de mensagens, fazendo uso de um Message Broker. Neste ambiente, em condições ideais, um Analista, dentre as ações necessárias, está escrevendo o código para envio de uma mensagem usando Java. Ele utiliza Spring Boot como framework de sua aplicação Java e Maven como gerenciador de dependências. Dentre as ações para viabilizar o envio da mensagem, ele adicionou no arquivo POM.XML da aplicação:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
```
Já na classe responsável por enviar mensagens da sua aplicação, ele acrescentou:
```
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String json) {
I
(this.getRoutingKey(), json);
}
```
A lacuna I deve ser corretamente preenchida com
- A`this.RabbitTemplate.convert`
- B`this.rabbitTemplate.Send`
- C`this.RabbitTemplate.send`
- D`this.rabbitTemplate.convertAndSend` (alternativa correta)
- E`this.RabbitTemplate.convert.send`
Resposta comentada
Gabarito Alternativa D
Quando você precisa enviar uma mensagem em uma aplicação Spring Boot para um sistema de mensageria (como o RabbitMQ), você usa o componente RabbitTemplate. Ele facilita a conversão do seu dado (como um texto JSON) em um formato de mensagem e o envio para o destino correto.
- (A) Incorreta: O nome da variável injetada é
rabbitTemplate(com 'r' minúsculo), nãoRabbitTemplate(com 'R' maiúsculo). Além disso, o métodoconvertapenas converte o objeto para uma mensagem, mas não a envia. - (B) Incorreta: O nome da variável injetada está correto (
rabbitTemplate), mas o métodoSend(com 'S' maiúsculo) não existe. Métodos em Java seguem a convenção camelCase, começando com minúscula. - (C) Incorreta: O nome da variável injetada está incorreto (
RabbitTemplatecom 'R' maiúsculo). Mesmo que fosserabbitTemplate.send, o métodosendgeralmente espera um objetoMessagejá formatado, não um objeto Java (como aString json) que precisa ser convertido antes do envio. - (D) Correta: Esta é a forma idiomática e correta. O método
convertAndSenddoRabbitTemplateé projetado especificamente para converter um objeto Java (como aString json) em um formato de mensagem e, em seguida, enviá-lo para o destino especificado pelaroutingKey. - (E) Incorreta: O nome da variável injetada está incorreto (
RabbitTemplatecom 'R' maiúsculo). A sintaxeconvert.sendsugere uma chamada encadeada que não corresponde à API padrão doRabbitTemplatepara este cenário. A funcionalidade de converter e enviar é encapsulada no métodoconvertAndSend.
Fonte: FCC TRT19 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.