Prévia do material em texto
Lista de exercícios Web Services Em Java T Sair Questão 1 de 10 Você acertou 2 de 10 questões Verifique o seu desempenho e continue treinando! Você pode refazer o exercício quantas vezes 1 2 3 4 5 quiser. 6 7 8 9 10 Verificar Desempenho Corretas (2) Incorretas (8) Em branco (0) 1 Marcar para revisão Os serviços de mensageria são amplamente utilizos em sistemas distribuídos, comunicação entre aplicativos e integração de sistemas. Nesse sentido, assinale a alternativa que apresenta uma característica do modelo (domínio) publish/subscribe dos serviços de mensageria: processamento na fila é feito uma mensagem por vez, ou seja, somente uma mensagem A por consumidor (one-to-one). Uma exchange deve controlar e redirecionar as mensagens para a fila. Este modelo permite que uma mensagem seja entregue para vários consumidores e, por isso, também é conhecida como one-to-many. Quando não é possível entregar uma mensagem neste modelo, uma fila é criada para onde D são enviadas estas mensagens. E Mensagens não entregues neste modelo são consumidas por um consumidor padrão. X Resposta incorreta Opa! A alternativa correta é a letra Confira gabarito comentado! Gabarito Comentado modelo publish/subscribe, ou publicar/se inscrever, é uma característica dos serviços de mensageria onde uma mensagem é enviada e pode ser recebida por vários consumidores. Isso ocorre porque as aplicações consumidoras se inscrevem para receber mensagens de um determinado tópico. Portanto, uma única mensagem pode ser entregue para vários consumidores, caracterizando o modelo como one-to-many (um-para-muitos). A alternativa c está correta, pois descreve exatamente essa característica do modelo publish/subscribe. 2 Marcar para revisão Python é uma linguagem de programação de alto nível, interpretada, de propósito geral. Considerando a implementação de um consumidor/produtor para RabbitMQ em Python, assinale a alternativa correta:Uma biblioteca que pode ser utilizada para facilitar a comunicação com servidor RabbitMQ A é a pika. B Quando criamos um objeto Channel, devemos passar como parâmetro tipo da fila. c Para utilizar a exchange default com o pika, devemos utilizar o exchange=null. D A mensagem a ser enviada é atribuída ao parâmetro TextMessage. nome da fila é definido no parâmetro queue do método set_queue de um objeto do tipo E Channel. X Resposta incorreta Opa! A alternativa correta é a letra Confira gabarito comentado! Gabarito Comentado Para facilitar a interação com o servidor de mensagens RabbitMQ, muitos desenvolvedores criam bibliotecas ou APIs que simplificam o desenvolvimento de aplicações. Existem bibliotecas específicas para acessar o servidor RabbitMQ em várias linguagens de programação, como Python, Java, PHP, entre outras. No caso do Python, uma dessas bibliotecas é chamada de pika, que é a alternativa correta. A biblioteca pika permite uma comunicação eficiente com o servidor RabbitMQ, sem a necessidade de passar tipo de fila como parâmetro ao criar um objeto Channel (Alternativa B), ou de definir o nome da fila no parâmetro queue do método set_queue de um objeto do tipo Channel (Alternativa E). Além disso, a mensagem a ser enviada não é atribuída ao parâmetro TextMessage (Alternativa D), e para utilizar a exchange default com o pika, não é necessário utilizar o exchange=null (Alternativa C). 3 Marcar para revisão RabbitMQ é um middleware de mensagens (message broker) open-source que permite a comunicação entre aplicações de forma assíncrona, escalável e confiável. Considerando a implementação de um consumidor/produtor para RabbitMQ em Java, assinale a alternativa correta: Uma biblioteca que pode ser utilizada para facilitar a comunicação com o servidor RabbitMQ A é a slf4j-simple.jar. Ao criar um objeto do tipo ConnectionFactory devemos passar como parâmetro o username e password. Um objeto Channel (com.rabbitmq.client.Channel) é criado a partir de um objeto do tipo criado anteriormente. Uma Exceção que deve ser tratada no código de envio de uma mensagem utilizando D componentes do pacote "com.rabbitmq.client" é a ArithmethicException. No consumidor, o método que é chamado automaticamente em uma fila para lidar com as E mensagens que chegam no servidor RabbitMQ é onMessage. Resposta correta Parabéns, você selecionou a alternativa correta. Confira gabarito comentado!Gabarito Comentado Para a implementação de um consumidor/produtor para RabbitMQ em Java, é necessário criar um objeto do tipo ConnectionFactory (com.rabbitmq.client.ConnectionFactory). A partir deste objeto, cria-se um objeto Channel (com.rabbitmq.client.Channel), que é utilizado para iniciar a troca de mensagens com o servidor. Portanto, a alternativa correta é a C, que afirma que um objeto Channel é criado a partir de um objeto do tipo ConnectionFactory. As demais alternativas apresentam informações incorretas ou incompletas sobre a implementação de um consumidor/produtor para RabbitMQ em Java. 4 Marcar para revisão Conexões são relações ou ligações entre coisas ou pessoas. Em informática, por exemplo, conexões podem se referir à comunicação entre dispositivos ou sistemas. Com relação às conexões no Java Message Service, assinale a alternativa verdadeira: A As conexões implementam a interface TopicConnection. B Uma conexão encapsula uma conexão virtual com um provedor JMS. As conexões implementam a interface QueueConnection. D Não é preciso fechar a conexão com o servidor quando o aplicativo é finalizado. E Para que sua aplicação consuma mensagens é preciso chamar o método init. X Resposta incorreta Opa! A alternativa correta é a letra B. Confira gabarito comentado! Gabarito Comentado Na alternativa correta, é mencionado que uma conexão encapsula uma conexão virtual com um provedor JMS. Isso significa que, em Java Message Service (JMS), uma conexão é uma representação de uma conexão TCP/IP aberta entre um cliente e um serviço do provedor. Para estabelecer essa comunicação, é criada uma conexão virtual, que é encapsulada e serve como canal de comunicação com o provedor. Portanto, a alternativa está correta, pois reflete corretamente o funcionamento das conexões no JMS. 5 Marcar para revisão Um Message Broker é uma solução inteligente que fornece mecanismos para que aplicativos possam se comunicar de forma assíncrona. Considerando o serviço de mensageria, apresente uma característica do Message Broker: É um servidor que serve para processar e suportar envio, recebimento e redirecionamento A das mensagens trocadas pelos sistemas de software. É o local onde as mensagens não entregues são colocadas para serem tratadas posteriormente.Pode ser desenvolvido em diversas linguagens de programação, mas somente implementa um protocolo de comunicação. D Comumente implementado em Python, dá suporte principalmente ao protocolo JMS. Geralmente implementado com dois servidores: o primeiro que implementa uma exchange e E segundo servidor que implementa e instancia as filas. X Resposta incorreta Opa! A alternativa correta é a letra A. Confira gabarito comentado! Gabarito Comentado Message Broker é um sistema intermediário, especificamente um servidor, que tem a função de processar, enviar, receber e monitorar a troca de mensagens entre diferentes sistemas de software. Isso é particularmente útil, pois permite que dois serviços, 'A' e 'B', por exemplo, necessitem apenas conhecer o formato das mensagens enviadas e recebidas para o Message Broker. Assim, se houver uma atualização em um serviço 'D', por exemplo, isso afetaria apenas uma possível troca de informações entre o serviço 'D' e o Message Broker, desde que o formato da mensagem seja mantido. Portanto, a alternativa A é a correta, pois descreve corretamente essa característica do Message Broker. 6 Marcar para revisão Existem dois tipos principais de comunicação em redes: comunicação síncrona e comunicação assíncrona. Considerando a comunicação assíncrona entre sistemas (com o uso de um message broker), assinale a alternativa verdadeira: Se um serviço quer enviar uma mensagem para ser consumida por outro serviço, esta A mensagem irá inicialmente para message broker. Na comunicação assíncrona, as tecnologias de desenvolvimento dos componentes do B produtor de mensagens e do consumidor de mensagens devem ser as mesmas. A comunicação assíncrona é feita somente sem a utilização do message broker, pois o mesmo serve para intermediar mensagens síncronas. O message broker deve conhecer e ser implementado com ambas as tecnologias de D desenvolvimento do produtor e consumidor de mensagens. Na comunicação assíncrona, o consumidor da mensagem deve aguardar o processamento E do produtor da mensagem para responder à mensagem. Resposta correta Parabéns, você selecionou a alternativa correta. Confira gabarito comentado! Gabarito Comentado A comunicação assíncrona é uma estratégia que resolve o problema de desempenho da comunicação síncrona. Nesse modelo, o sistema não precisa aguardar a resposta de um serviço para continuar o processamento. Quando um serviço deseja enviar uma mensagem para ser consumida por outro serviço, essa mensagem é inicialmente enviada para um sistema intermediário, conhecido como message bus ou message broker. Este é responsável por lidar com todas as requisições, permitindo que o sistema continue seu processamento sem interrupções.Portanto, a alternativa A está correta, pois reflete corretamente o funcionamento da comunicação assíncrona. 7 Marcar para revisão modelo de mensageria ponto-a-ponto é mais apropriado para situações em que a ordem das mensagens é importante, ou onde é necessário garantir que cada mensagem seja processada apenas uma vez. De acordo com os seus conhecimentos, assinale a alternativa que apresenta uma característica do modelo (domínio) ponto-a-ponto dos serviços de mensageria: A Os produtores das mensagens ficam "ouvindo" as filas. processamento da fila é feito de um para muitos (one-to-many). c Existem dois consumidores para cada fila. D A troca das mensagens (informações) é baseada em filas. E consumidor da fila deve "assinar" uma fila para receber as mensagens. X Resposta incorreta Opa! A alternativa correta é a letra D. Confira gabarito comentado! Gabarito Comentado No modelo de mensageria ponto-a-ponto, a troca de informações é baseada em filas. Isso significa que a mensagem é enviada por um serviço, que é o produtor, e posteriormente é consumida por uma ou mais aplicações, que são os consumidores. Essas aplicações "assinam" a fila para receber as mensagens. Portanto, a alternativa D é a correta, pois afirma que a troca de mensagens é baseada em filas, que é uma característica fundamental desse modelo de mensageria. 8 Marcar para revisão Com relação à implementação de filas do tipo publish/subscribe em Python para implementar a comunicação com o RabbitMQ, marque a alternativa correta. A As filas devem possuir nome de logs. Um objeto channel é criado a partir de uma credencial (credential). A função a ser chamada caso uma mensagem seja recebida pela fila deve se chamar callback.método queue_bind de um objeto da classe channel pode ser usado para se conectar a D uma determinada exchange e fila. E Para iniciar o consumo de mensagens, devemos chamar método start() de channel. X Resposta incorreta Opa! A alternativa correta é a letra D. Confira gabarito comentado! Gabarito Comentado Na implementação de filas do tipo publish/subscribe em Python, utilizando a biblioteca pika, primeiro passo é criar uma conexão com o servidor, utilizando as informações do servidor e as credenciais apropriadas. Após estabelecer a conexão, um objeto channel é criado. Este objeto será usado para interagir com uma exchange. Para se conectar a uma exchange específica, utiliza-se o método queue_bind do objeto channel. Portanto, a alternativa D está correta, pois afirma que o método queue_bind de um objeto da classe channel pode ser usado para se conectar a uma determinada exchange e fila. 9 Marcar para revisão JMS é uma especificação da indústria que define uma interface comum para a programação de mensagens assíncronas. No Java Message Server, assinale a alternativa verdadeira com relação ao produtor/consumidor de mensagens: Um objeto do tipo MessageProducer é criado a partir de uma fábrica de conexões, sendo A opcional a criação das sessões (Session). B A partir de um objeto do tipo Session, é possível criar um MessageProducer. c A partir de um objeto Session, criamos uma fila ou um tópico. Um objeto do tipo MessageConsumer é criado a partir de uma fábrica de conexões, sendo D opcional a criação das sessões (Session). E Para consumir uma mensagem, devemos, preferencialmente, utilizar o connection.start( X Resposta incorreta Opa! A alternativa correta é a letra B. Confira gabarito comentado! Gabarito Comentado No contexto do Java Message Server, a alternativa correta é a B. Isso porque um objeto do tipo MessageProducer, que é responsável por enviar mensagens, é criado a partir de um objeto do tipo Session. A sessão, por sua vez, é criada a partir de uma conexão. Portanto, a criação de um MessageProducer está diretamente ligada a um objeto Session, e não a uma fábrica de conexões, como sugerido em outras alternativas. Assim, a alternativa está correta ao afirmar que "A partir de um objeto do tipo Session, é possível criar um MessageProducer". 10 Marcar para revisãoJava Message Service (JMS) é uma API Java que permite que aplicativos criem, enviem, recebam e leiam mensagens. No Java Message Service, se desejamos criar uma conexão do tipo publish/subscribe, instanciamos um objeto do tipo: A QueueConnectionFactory. PublishConnectionFactory. c SubscribeConnectionFactory. D DomainConnectionFactory. E TopicConnectionFactory. X Resposta incorreta Opa! A alternativa correta é a letra E. Confira gabarito comentado! Gabarito Comentado No Java Message Service (JMS), existem dois tipos principais de filas: ponto-a-ponto e publish/subscribe. Para criar uma conexão, é necessário instanciar uma fábrica de conexão, que é utilizada pelo cliente para estabelecer a conexão com um provedor. A interface básica para essa fábrica é a ConnectionFactory. Esta interface tem duas subclasses: QueueConnectionFactory, que é usada para implementar uma fila do tipo ponto-a-ponto, e TopicConnectionFactory, que é usada para implementar uma fila do tipo publish/subscribe. Portanto, para criar uma conexão do tipo publish/subscribe, instanciamos um objeto do tipo TopicConnectionFactory.