建设网站需要懂什么,网站分页代码,网站的优化什么做,做包装一般看什么网站jms面试题快速浏览JMS#xff08;Java消息服务#xff09;常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中#xff0c;我们将了解2020年经常问到的JMS面试问题。作为面试的一部分#xff0c;如果您有6年以上的经验#xff0c;就有机会… jms面试题 快速浏览JMSJava消息服务常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中我们将了解2020年经常问到的JMS面试问题。作为面试的一部分如果您有6年以上的经验就有机会在JMS领域提出一些问题。 但是即使经验不足也可以将JMS经验作为参考。 采访者将检查消息传递是否是企业Java开发的关键方面。 JMS是一种流行的开源Messaging API许多供应商例如 Apache Active MQ Websphere MQ Sonic MQ提供了Java消息传递API或JMS的实现。 通常任何面试都从基本开始。 如果正确回答了所有问题那么我们将继续研究基于JMS体验项目的问题。 基础知识是什么 什么是队列 什么是发布者 什么是订户 什么是发布者和订阅者模型 如何配置MQ 下一级别意味着对实施JMS概念的项目有疑问吗 2. JMS面试问题 2.1 WHat是JMS的意思吗 JMS是由Sun Microsystems提供的Java消息服务可在网络中的计算机之间提供通信。 这是与客户端系统进行交互的标准。 在这里J2EE应用程序可以使用JMS来创建发送或接收阅读消息。 2.2 JMS提供哪些消息传递类型 JMS附带两种消息。 A同步 B异步 2.3同步消息类型和异步消息类型之间有什么区别 同步消息 同步消息传递涉及一个客户端它等待服务器响应消息。 消息能够双向流动。 从本质上讲这意味着同步消息传递是双向通信。 即发件人向接收方发送一条消息接收方接收到此消息并向发送方回复。 发件人直到收到收件人的答复后才发送其他消息。 异步消息 异步消息传递涉及一个不等待来自服务器的消息的客户端。 事件用于触发来自服务器的消息。 因此即使客户端关闭消息传递也将成功完成。 异步消息意味着这是一种单向通信而通信流只是一种方式。 2.4 JMS提供什么类型的消息传递模型 在消息传递世界中它主要提供以下两种消息传递模型并且这两种是常用的。 A点对点模型 B发布和订阅模型 点对点模型 P2P消息传递模型由消息发送者接收者队列和消息组成。 生成消息的JMS客户端称为发送者。 使用消息的JMS客户端称为接收方。 在P2P模型中发件人将消息发送到称为队列的目的地。 接收者从同一队列中检索消息 发布和订阅模型 发布/订阅模型由消息发布者订阅者和主题组成。 消息产生者称为发布者消息产生者称为发布者。 消息使用者称为订户。 发布者发送消息而订阅者检索消息的目的地称为主题。 发布/订阅模型基于内容层次结构中节点的概念其中发布者将消息发布到目的地并且消息将广播到所有注册的订户。 2.5主题和队列有什么区别 队列意味着一条消息发给一个并且只有一个可能的订户。 每个用户都有一个话题。 主题针对发布者-订阅者模型而队列针对点对点。 所有用户都收到相同的已发布消息。 主题一种发布机制用于发布传递到多个订户的消息。 2.6 JMS提供程序的用途是什么 JMS提供程序是一个消息传递系统它实现JMS接口并提供管理和控制功能。 Java EE平台的实现包括JMS提供程序。 JMS客户端是用Java编程语言编写的程序或组件它们产生和使用消息。 它还指定了非JMS客户端的加密级别消息的安全级别和最佳数据类型。 2.7 JMS体系结构中有哪些组件 消息生产者 消息消费者 JMS消息 管理的JMS对象 JNDI命名服务 2.8举例说明在JMS中使用点对点模型吗 2.9支持JMS的应用程序需要哪些核心JMS对象 2.10什么是JMS管理对象 JMS管理的对象是一个预先配置的JMS对象由管理员创建以供使用JMS客户端并放置在JNDI名称空间中。 2.11 JMS应用程序的重要部分是什么 连接 届会 信息 消息生产者 讯息使用者 连接工厂和目的地 2.12什么是JMS会话及其用途 会话是用于产生产生和消耗接收消息的单线程上下文。 JMS会话可以是本地事务非事务或分布式事务。 用途 会话有几个目的 它是一个为消息生产者和消费者提供服务的工厂。 它提供了提供程序优化的消息工厂。 它支持单一系列的交易将其生产者和消费者的工作组合成原子单位。 它为消耗的消息和产生的消息定义序列顺序。 它保留消耗的消息直到被确认为止。 它序列化向其消息使用者注册的消息侦听器的执行。 一个会话可以创建并服务多个消息生产者和使用者。 2.13持久订阅和非持久订阅有什么区别 持久订阅使订户可以自由地接收来自某个主题的所有消息并永久存储消息而非持久订阅则不能保证在客户端与其他人断开连接时其他人发送的消息并且这些不存储任何消息。消息。 注意我们在两种情况下比较了持久订户和非持久订户的性能持久和非持久的10k大小的消息。 两种情况都使用AUTO_ACKNOWLEDGE确认模式。 我们仅在持久消息的情况下才发现性能影响这会使传递给持久订户的消息速度降低了约30。 2.14什么是字节消息 BytesMessage对象用于发送包含未解释字节流的消息。 它从Message接口继承并添加一个字节的消息正文。 消息的接收者提供字节的解释。 BytesMessage方法主要基于java.io.DataInputStream和java.io.DataOutputStream中的方法。 此消息类型用于现有消息格式的客户端编码。 如果可能应改用其他自定义消息类型之一。 2.15讨论JMS API中可用的不同类型的消息吗 JMS API中提供了不同类型的消息这些消息是 TextMessageBytesMessageStreamMessageObjectMessage和 MapMessage 。 一条短信 TextMessage用于存储任何特定长度的字符串值。 但这仅需要String消息。 此消息类型可用于传输基于文本的消息包括具有XML内容的消息。 当客户端收到TextMessage时 它处于只读模式。 如果客户端此时尝试写入消息则会引发MessageNotWriteableException 。 如果调用clearBody 则现在可以读取和写入消息。 //Create a TextMessage TextMessage sampleTextMsg session.createTextMessage(); //Store values within TextMessage sampleTextMsg.setText(“sample content”); // Retrieve values from TextMessage String storedText sampleTextMsg.getText(); B.字节消息 //Create BytesMessage BytesMessage sampleBytesMsg session.createBytesMessage(); //Storing an array of numbers in BytesMessage byte [] byteArray new byte []{ 66 , 68 , 70 }; sampleBytesMsg.writeBytes(byteArray); // Fetch the stored numbers by doing required casting byte [] msgContent new byte [ 3 ]; sampleBytesMsg.readBytes(msgContent); C.StreamMessage StreamMessage对象用于以Java编程语言发送原始类型的流。 它被填充并顺序读取。 原始类型可以使用每种类型的方法显式读取或写入。 //Create a StreamMessage StreamMessage sampleStreamMsg session.createStreamMessage(); //Store values within StreamMessage sampleStreamMsg.writeBoolean( false ); sampleStreamMsg.writeBoolean( true ); sampleStreamMsg.writeBoolean( false ); // Retrieve values from StreamMessage System.out.println(sampleStreamMsg.readBoolean()); System.out.println(sampleStreamMsg.readBoolean()); System.out.println(sampleStreamMsg.readBoolean()); D.对象消息 使用ObjectMessage 可以将对象包装为消息并跨其传输但是该对象必须可序列化。 //Create an ObjectMessage ObjectMessage sampleObjMsg session.createObjectMessage(); //Create a ValueObject and initialize it with values ValueObject vObj new ValueObject(sampleField, 54 ); //Store the ValueObject within ObjectMessage sampleObjMsg.setObject(vObj)); //Retrieve the stored ValueObject from the ObjectMessage vObj (ValueObject) sampleObjMsg.getObject(); E.MapMessage MapMessage对象用于发送一组名称/值对。 名称是String对象值是Java的原始数据类型。 名称不能为空。 //Create a MapMessage MapMessage sampleMapMsg session.createMapMessage(); //Set Key Value Pair with type String sampleMapMsg.setString( SampleKey , SampleValue ); // Retrieve String value using Key sampleMapMsg.getString( SampleKey ); //Set Key Value Pair without specifying type sampleMapMsg.setObject( SampleKey1 , SampleValue1 ); // Retrieve Object value using Key sampleMapMsg.getObject( SampleKey1 ); 2.16 Difference between the P2P(Peer to Peer) model and subscribe model? 主要区别在于P2P是高度可靠的应仅在一对一方案中使用但订户模型可以在一对多方案中使用。 2.17什么是JMS客户端 JMS客户端是JMS的核心组件用于发送或接收消息。 JMS支持两种消息传递样式点对点以及发布和订阅消息传递样式 JMS是否支持电子邮件作为消息类型 不能。JMS没有继承它的功能。 2.19 JMS与RPC有何不同 Java消息服务JMS JMS本质上是异步的。 当必须发送消息时发件人会将消息发送给接收者。 这样发件人的工作就完成了它将继续进行进一步的处理。 接收者将接收到该消息并继续其自身的处理。 接收到消息后没有从接收方向发送方发送确认。 这是因为JMS是异步的。 在JMS中消息的发送者和接收者之间没有耦合。 因此JMS允许动态添加新的发送者和接收者从而管理一段时间内复杂性的变化。 因此JMS是松散耦合的。 当发生意外故障时JMS将存储待发送的消息。 系统启动后存储的消息将被发送到相应的接收者。 远程过程调用RPC RPC本质上是同步的。 与JMS不同远程过程调用的调用者将调用该方法并继续等待直到被调用的方法完成其执行。 一旦调用的方法执行完成控件就会返回到调用者。 这是因为RPC在行为上是同步的。 RPC在相互交互的系统之间建立了紧密的耦合。 当调用程序调用远程方法时调用程序将被阻塞直到响应返回给调用程序为止。 当发生意外故障时该故障将影响整个系统。 因此整个系统将崩溃。 2.20如何在JMS中向非Java客户端传递消息 如果您的Java代码和非Java代码可以就基于字节或文本的消息格式达成一致则可以在它们之间交换消息。 是的它可以消耗一条Java消息。 3.结论 在本文中我们已经看到了JMS上最常见的面试问题 。 我们将添加更多的问题和答案。 如果您除了这些以外还有其他疑问请在评论部分中发布。 我们将在本文中添加答案。 翻译自: https://www.javacodegeeks.com/2020/04/latest-20-jms-interview-questions-and-answers-2020.htmljms面试题