top 30 jms interview questions
Perguntas e respostas mais populares da entrevista JMS para profissionais mais novos e experientes:
JMS ou Java Messaging Service atualmente se tornou um dos modelos mais dominantes para entrega segura, confiável e escalável de mensagens em todo o mundo.
Esse modelo é muito bem estruturado e oferece suporte a várias formas de técnicas e protocolos de mensagens.
Vamos mergulhar e analisar algumas perguntas e respostas que são feitas com frequência sobre este tópico em todo o setor.
Perguntas mais populares da entrevista JMS
A seguir está uma lista das perguntas mais frequentes da entrevista do Java Message Service, juntamente com respostas detalhadas.
P # 1) O que é JMS?
Responda: Java Messaging Service é uma API Java que permite aos sistemas criar, ler, enviar e receber mensagens.
A parte mais importante do algoritmo é muito bem estruturada e permite que um aplicativo envie uma mensagem para outro aplicativo e também permite recursos de transmissão para os assinantes.
P # 2) Quais são os tipos de comunicação fornecidos pelo JMS? Explique em detalhes.
Resposta: Esta API fornece dois tipos de comunicação:
- Assíncrono: A mensagem será entregue ao cliente, não é necessário que o cliente envie pedidos para a receber. O aplicativo cliente irá recebê-lo assim que o aplicativo remetente transmitir.
- De confiança: Aqui a mensagem é enviada ao aplicativo cliente, uma vez que o protocolo API garante a disponibilidade do aplicativo receptor.
P # 3) Qual é o número de modelos de mensagens disponíveis no JMS?
Responda: Especificamente, existem dois tipos de modelo fornecidos pelo JMS:
Ponto a ponto: Como o próprio nome sugere, é um mecanismo de mensagens um a um, em que o remetente envia uma mensagem a um único destinatário. A mensagem fica disponível para o aplicativo receptor assim que estiver pronta e até então a mensagem é armazenada na fila.
A parte mais importante disso é que não há nenhuma dependência com relação ao tempo entre o aplicativo emissor e o aplicativo receptor.
Publicar e assinar: Esse mecanismo de mensagem é projetado de forma muito exclusiva pela JMS.
Por exemplo , um leitor assina um blog no qual a pessoa está interessada. Agora, pode haver várias pessoas interessadas em um determinado blog.
E eles se inscrevem / registram nesse blog. Agora, quando uma nova postagem ou tópico for publicado no blog, todos os leitores cadastrados receberão uma atualização. Esse modelo de mensagem é denominado Publicar e Assinar.
P # 4) O que é uma fila?
Responda: No mecanismo ponto a ponto do JMS, o aplicativo de origem envia uma mensagem para o aplicativo de destino, a mensagem é consumida pelo aplicativo de destino assim que estiver disponível, até que a unidade de armazenamento da própria hora é chamada de fila.
P # 5) O que é um tópico?
Responda: No modelo Publicar / Assinar, o aplicativo cliente / editor gera uma mensagem e essa mensagem fica disponível para todos os assinantes ou aplicativos de destino. Esta mensagem é chamada de Tópico.
P # 6) Qual é a principal diferença entre o mecanismo de trabalho do JMS e do RPC?
Responda: A diferença identificável entre os dois modelos está na maneira como a mensagem é entregue.
No caso de JMS, o aplicativo emissor envia a mensagem para o aplicativo de destino e, em seguida, espera / ou processa outra mensagem de acordo com os critérios de programação.
Já no caso do RPC, o encadeamento é concluído assim que a mensagem chega ao destino e o controle volta ao método responsável pelo transporte da mensagem.
P # 7) O que é Middleware Orientado a Mensagens?
Responda: O Message Oriented Middleware é um software que funciona entre o aplicativo emissor e o aplicativo de destino no modelo de trabalho JMS.
P # 8) Como o Message Oriented Middleware é responsável por nenhuma dependência de tempo entre o componente emissor e o receptor com relação ao modelo Ponto a Ponto no JMS?
Responda: Como o middleware MOM opera entre o componente emissor e o receptor, ele cuida da mensagem e a transporta pelo mecanismo de enfileiramento. Assim, até que o aplicativo destino / receptor fique disponível para receber / ler a mensagem, a mensagem é armazenada em uma fila.
O mais importante é que o método responsável pelo envio da mensagem não esteja ocupado até que o aplicativo receptor receba a mensagem. Assim, tanto o aplicativo emissor quanto o receptor funcionam independentemente, sem nenhuma dependência de tempo.
Q # 9) Nomeie os tipos de mensagens suportados pelo JMS.
Responda: Os tipos de mensagens compatíveis com JMS são:
- Mensagens de texto
- Mensagens de fluxo
- Mensagens de mapa
- Mensagens de Bytes
- Mensagens de Objeto
P # 10) O que é uma mensagem de bytes?
Responda: O objeto Bytes Message é realmente responsável por enviar a mensagem contendo um fluxo de bytes ininterruptos e herda da interface da mensagem e adiciona um corpo de mensagem de bytes. O receptor da mensagem é responsável pela interpretação da mensagem.
A API JMS permite o transporte deste tipo de mensagens, mas de acordo com os documentos do oracle, eles normalmente não são usados, pois a inclusão de propriedades pode afetar o formato da mensagem.
P # 11) O que é StreamMessage?
Responda: Um objeto StreamMessage é usado para enviar o fluxo de tipos de dados primitivos na linguagem de programação Java. Os dados são preenchidos e lidos sequencialmente. Ele herda da interface Message e adiciona um corpo de mensagem de fluxo.
java.io.DataInputStream e java.io.DataOutputStream são APIs que suportam esses tipos de mensagens.
P # 12) O que é uma mensagem de texto?
Responda: Uma mensagem de texto é aquela que é tratada por java.lang.String e herda da interface da mensagem e adiciona um corpo de mensagem de texto. Isso é usado para transportar as mensagens que contêm um texto.
P # 13) O que é uma mensagem de objeto?
Responda: Uma mensagem de objeto geralmente contém um objeto Java serializável em seu corpo de mensagem. Geralmente, o aplicativo receptor recebe a mensagem do Objeto em modo somente leitura.
Q # 14) O que é uma mensagem de mapa?
Responda: O corpo da mensagem do objeto Map Message contém um conjunto de pares nome-valor, em que os nomes são objetos String e os valores são primitivos Java. As entradas podem ser acessadas sequencialmente ou aleatoriamente por nome. Na verdade, a Mensagem do Mapa herda da interface da Mensagem e adiciona um corpo da mensagem que contém um Mapa.
Q # 15) O que é JNDI? Como isso está relacionado ao JMS?
Responda: JNDI é o Java Naming and Directory Interface. Se um aplicativo estiver conectado a um banco de dados, permite que o desenvolvedor do aplicativo dê um nome a esse banco de dados em vez de se preocupar com as credenciais de conexão do banco de dados.
A API JNDI acessará o diretório de nomenclatura e encontrará o mapeamento entre o nome e o objeto de banco de dados e se conectará de acordo. Podemos usar este mecanismo enquanto estamos nos conectando a qualquer connectionFactory (fila ou tópico) para enviar mensagens.
P # 16) Como um aplicativo remetente transporta / envia uma mensagem por meio de JMS?
Responda: A seguir, estão algumas maneiras de enviar uma mensagem por meio do JMS:
- Implemente o JNDI para pesquisar as credenciais da connectionFactory.
- Crie um objeto connectionFactory para implementação.
- Identifique os objetos de destino (um ou mais).
- Utilize o objeto connectionFactory para estabelecer a conexão JMS.
- Crie uma ou mais sessões.
- Use uma sessão e os destinos para criar os MessageProducers e MessageConsumers necessários.
- Comunique-se usando o canal.
Q # 17) Nomeie os componentes do JMS.
Resposta: Os componentes do JMS incluem:
- Provedor JMS
- Cliente JMS
- Mensagens
- Objetos Administrados
- Clientes Nativos
P # 18) O que são objetos administrados no JMS?
Responda: O objeto administrado por JMS é, na verdade, aquelas credenciais configuradas pelo administrador para se conectar ao cliente JMS e são definidas em JNDI. Esses objetos são configurados antes de se conectar com o cliente JMS dentro do servidor.
P # 19) Quais são as funcionalidades de um Provedor JMS?
Responda: O Provedor JMS basicamente cuida da segurança e dos dados.
É responsável por garantir que a mensagem seja entregue de maneira segura, também cuida da criptografia de dados e dos padrões de codificação de dados e é responsável por chamar a mensagem para o cliente não JMS.
Q # 20) O que é uma sessão JMS?
Responda: Uma sessão JMS é um estado que controla o fluxo total do envio ao recebimento das mensagens JMS.
Q # 21) Podemos usar JMS para enviar e-mails automatizados?
java como remover um elemento de um array
Responda: JMS não tem APIs padrão que suportam o recurso, no entanto, podemos usar JavaMail para enviar e-mails automatizados.
Q # 22) Qual é a funcionalidade de um Listener de mensagem no contexto do JMS?
Responda: O Message Listener é normalmente usado com o consumidor de mensagem no caso de entrega assíncrona. Para entrega assíncrona, pode-se registrar um objeto de MessageListener com messageConsumer.
P # 23) O que é o cliente JMS?
Responda: O cliente JMS é basicamente um componente escrito na linguagem de programação Java que é responsável por chamar e consumir corpos de mensagens.
P # 24) O que é uma mensagem?
Responda: Uma mensagem é um corpo, em vez de um componente que se comunica entre os clientes JMS.
P # 25) Qual é a funcionalidade de um Produtor de mensagem JMS?
Responda: Um produtor de mensagem é basicamente um componente criado por uma sessão JMS para enviar uma mensagem ao aplicativo receptor.
Pode-se criar uma sessão e implementar a interface MessageProducer para definir um objeto de destino, objeto de fila ou objeto de tópico. Pode-se declarar um produtor como não especificado atribuindo null em seu argumento em vez de um objeto. Posteriormente, podemos usar a sobrecarga do método Java no método send para especificar um destino, mensagem como argumentos ou parâmetros.
P # 26) Qual é a funcionalidade dos consumidores de mensagem JMS?
Responda: Um consumidor de mensagem é basicamente um componente que é criado por uma sessão JMS para receber uma mensagem pelo aplicativo receptor. Pode-se criar uma sessão e implementar uma interface MessageConsumer para definir o objeto de destino, objeto de fila ou objeto de tópico.
Pode-se usar createDurableSubscriber com o objeto de sessão para criar um assinante de tópico durável, mas pode-se usá-lo para criar um tópico para o modelo Publicar / Assinar e não para criar filas.
O consumidor se torna ativo assim que o objeto consumidor é criado. Podemos usar o objeto para receber e enviar mensagens. Para desativar isso, pode-se usar um método de fechamento para um MessageConsumer.
Q # 27) Qual é a funcionalidade de um JMS Queue Browser?
Responda: Como já discutimos anteriormente, o conceito de fila, onde a mensagem é armazenada até que o receptor a receba. A funcionalidade de navegar pelas mensagens na fila e exibir os valores do cabeçalho é suportada pelo objeto QueueBrowser.
Pode-se criar um objeto QueueBrowser via. Sessão JMS.
P # 28) Qual é a funcionalidade de um Seletor de Mensagem JMS?
Responda: O seletor de mensagens JMS é basicamente uma API responsável por filtrar as mensagens que recebe para qualquer aplicativo específico. Os Seletores de Mensagens, na verdade, atribuem a tarefa ao Provedor JMS, que é realmente responsável por filtrar as mensagens.
Na verdade, um seletor de mensagem aceita valores de tipo de string como entrada.
WatchType = ’Titan’ OR WatchType = ’Rolex’
Os métodos createConsumer e createDurableSubscriber permitem especificar um seletor de mensagem como um argumento quando se cria um consumidor de mensagem.
P # 29) Como lidar com a exceção causada pelo JMS?
Responda: A principal classe responsável por lançar exceções relacionadas a JMS pela API JMS é JMSException.
Catching JMSException fornece uma maneira genérica de lidar com todas as exceções relacionadas à API JMS.
A classe Exceção JMS inclui as seguintes subclasses, que são descritas na documentação da API:
- IllegalStateException
- InvalidClientIDException
- InvalidDestinationException
- InvalidSelectorException
- JMSSecurityException
- MessageEOFException
- MessageFormatException
- MessageNotReadableException
- MessageNotWriteableException
- ResourceAllocationException
- TransactionInProgressException
- TransactionRolledBackException
P # 30) Como lidar com sessões não transacionadas em relação ao JMS?
Responda: No caso de sessões não transacionadas, as mensagens são reconhecidas com base no argumento passado durante a criação de um objeto de sessão do método QueueSession ou TopicSession.
As opções abaixo são geralmente usadas de acordo com os requisitos de negócios:
- Sessão. AUTO_ACKNOWLEDGE: Se esse argumento for transmitido durante a criação de um objeto de sessão, se ocorrer JMSException, um consumidor confiável aguardará alguns segundos e chamará o método MessageConsumer.receive para receber as mensagens novamente. Devido ao failover, se alguma mensagem não for entregue, ela será reenviada.
- Sessão. CLIENT_ACKNOWLEDGE: Se passarmos esse argumento durante a criação de um objeto de sessão, então, se ocorrer JMSException, o consumidor chamará Session.recover antes de chamar Message.aknowledge ou MessageConsumer.receive, porque Session.recover é responsável por recuperar e reenviar mensagens não confirmadas.
- Sessão. DUPS_OK_ACKNOWLEDGE: Se esse argumento for transmitido durante a criação de um objeto de sessão, se ocorrer JMSException, um consumidor confiável aguardará alguns segundos e chamará o método MessageConsumer.receive para receber as mensagens novamente. Mas aqui é possível receber mensagens duplicadas ou as mesmas mensagens reenviadas como neste modo antes do failover, mensagens confirmadas podem ser reenviadas.
Observação : Aqui no código de exemplo, usei QueueSession, mas pode-se usar TopicSession para passar esses argumentos.
P # 31) Qual é a funcionalidade do servidor Oracle Glassfish? Que vantagem adicional ele tem sobre o servidor Apache Tomcat?
Responda: O servidor Glassfish é, na verdade, um servidor de aplicativos e também pode ser usado como servidores web, o que significa que pode lidar com solicitações HTTP dos navegadores da web.
Como um servidor de aplicativos, ele é desenvolvido para lidar com todos os tipos de aplicativos Java Enterprise em termos de servlets / JSP e também componentes EJB.
Enquanto o servidor Tomcat é, na verdade, um contêiner de servlet que geralmente é usado para manipular servlets ou componentes JSP.
Q # 32) Como criar uma sessão EJB para iniciar uma conexão JMS?
Responda: Podemos criar uma sessão EJB para JMS conforme escrevemos no código a seguir.
Q # 33) Descreva o conceito de Message Driven Bean Clustering.
Responda: Se um aplicativo baseado em componente EJB for implementado em qualquer cluster de servidor de aplicativos, ele pode ser configurado para ser executado em qualquer servidor dentro do cluster para fornecer disponibilidade e escalabilidade para o aplicativo.
Se um EJB estiver na forma de Message Driven Bean (MDB), ele pode ser executado em qualquer servidor dentro do cluster e pode ser iniciado paralelamente a vários servidores de aplicativos no cluster.
Conclusão
Espero que esta lista das principais perguntas da entrevista JMS tenha sido realmente informativa e tenho certeza de que você pode quebrar qualquer entrevista com um conhecimento completo desta lista.
Esperançosamente, isso teria ajudado muito! Aprendizagem feliz !!
Leitura recomendada
- Perguntas e respostas da entrevista
- Algumas perguntas interessantes da entrevista de teste de software
- Perguntas e respostas da entrevista de teste de ETL
- As 12 principais perguntas da entrevista de Mockito (Entrevista de Mocking Framework)
- Principais perguntas da entrevista sobre Oracle Forms e Reports
- Perguntas da entrevista de teste manual de software para profissionais experientes
- Implantação Java: Criação e execução de arquivo JAR Java
- Principais perguntas técnicas da entrevista sobre Oracle Apps e Oracle SOA