Questão nº 18
Questão de Arquitetura de Desenvolvimento de Software · FGV SEFAZ-AM 2022 - Prova II (nº 18)
O Java Message Service (JMS) oferece meios para implementar comunicação em sistemas distribuídos.
Em relação ao JMS, assinale a afirmativa correta.
- AAs mensagens trocadas entre produtores e consumidores devem ser em formato textual.
- BNo modelo de mensageria publish/subscribe, cada mensagem tem apenas um consumidor.
- CUma mesma aplicação JMS pode utilizar múltiplas filas ou tópicos, mas não ambos.
- DÉ possível garantir que uma mensagem seja entregue uma vez e apenas uma vez. (alternativa correta)
- EAs mensagens JMS nunca expiram, porque é vedado tornar qualquer mensagem endereçável obsoleta.
Resposta comentada
Gabarito Alternativa D
JMS (Java Message Service) é uma interface de programação de aplicações (API) Java que permite que programas criem, enviem, recebam e leiam mensagens de forma assíncrona e confiável entre si, mesmo que estejam em diferentes máquinas ou não estejam ativos ao mesmo tempo.
(A) Incorreta: As mensagens JMS podem ser de vários tipos, como texto (`TextMessage`), bytes (`BytesMessage`), objetos Java serializados (`ObjectMessage`), mapas de pares chave-valor (`MapMessage`), entre outros. Não se limitam apenas a formato textual.
(B) Incorreta: No modelo publish/subscribe (tópicos), uma mensagem enviada por um produtor pode ser recebida por múltiplos consumidores que estejam inscritos no tópico. O modelo onde cada mensagem tem apenas um consumidor é o point-to-point (filas). Armadilha da banca: Confundir os modelos de mensageria. O publish/subscribe é justamente para distribuição de uma mensagem para vários interessados.
(C) Incorreta: Uma aplicação JMS pode, e frequentemente o faz, utilizar tanto filas (para comunicação point-to-point) quanto tópicos (para comunicação publish/subscribe) simultaneamente, dependendo das necessidades de comunicação de cada parte do sistema.
(D) Correta: Com as configurações apropriadas de modo de entrega (delivery mode), persistência, transações e modos de reconhecimento (acknowledgment modes), o JMS pode garantir que uma mensagem seja entregue ao consumidor exatamente uma vez, evitando perdas ou duplicações.
(E) Incorreta: Mensagens JMS podem ter um tempo de vida (Time-To-Live - TTL) definido, após o qual elas expiram e são descartadas pelo provedor JMS se não forem consumidas. Isso é útil para mensagens com validade temporal.
Fonte: FGV SEFAZ-AM 2022 - Prova II Analista de Tecnologia da Informação da Fazenda Estadual (Caderno Tipo 1). Reproduzida para fins de estudo.