最新的20多个JMS面试问答(2020)

快速浏览JMS(Java消息服务)常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。

1.简介

在本教程中,我们将了解2020年常见的JMS面试问题。作为面试的一部分,如果您有6年以上的经验,就有机会在JMS领域提出一些问题。 但是,即使经验不足,也可以将JMS经验作为参考。 采访者将检查消息传递是企业Java开发的关键方面。

JMS是一种流行的开源Messaging API,许多供应商(例如 Apache Active MQWebsphere MQSonic 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中提供了不同类型的消息,这些消息是
TextMessage,BytesMessage,StreamMessage,ObjectMessage
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.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言中组合函数,排列组合c怎么算 公式是什么

排列有两种定义,但计算方法只有一种,凡是符合这两种定义的都用这种方法计算。定义的前提条件是m≦n,m与n均为自然数。下面介绍排列组合c的计算方法及公式,供参考。排列组合中A和C怎么算排列A(n,m)n(n-1).(n-m1)n!/(n-m)!(n为下标,…

使用Spring WebFlux构建反应性REST API –第1部分

在本文中,我们将看到如何使用Spring WebFlux构建响应式REST API。 在进入反应式API之前,让我们看看系统是如何发展的,传统REST实现遇到的问题以及现代API的需求。 如果您查看从旧版系统到下文所述的现代系统的期望, 现代系统的期…

gradle引入依赖:_Gradle善良:获得更多的依赖性见解

gradle引入依赖:在我们的大多数项目中,我们都依赖于其他代码,例如库或其他项目。 Gradle有一个不错的DSL来定义依赖关系。 依赖性在依赖性配置中分组。 这些配置可以自己创建,也可以通过插件添加。 一旦定义了依赖关系,我们就可以…

android popupwindow 调用方法,Android PopUpWindow使用详解

释放双眼,带上耳机,听听看~!一、概述1、PopupWindow与AlertDialog的区别最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。而PopupWindow是可以指定显示位置…

高效应用程序的7个JVM参数

在撰写本文时(2020年3月),围绕垃圾收集和内存,您可以将600多个参数传递给JVM。 如果您包括其他方面,则JVM参数总数将很容易超过1000个。 😊。 任何人都无法消化和理解太多的论据。 在本文中,我们…

junit:junit_简而言之,JUnit:另一个JUnit教程

junit:junit为什么还要另一个JUnit教程? 对于Java世界中的开发人员而言, JUnit似乎是最受欢迎的测试工具 。 因此,难怪就此主题已经写了一些好书 。 但是我仍然经常遇到程序员,他们至多对这个工具及其正确用法都不太了解。 因此&…

用Java将文件读入字节数组的7个示例

嗨,大家好,Java程序员经常在现实世界中遇到编程问题,他们需要将文件中的数据加载到字节数组中,该文件可以是文本或二进制文件。 一个示例是将文件的内容转换为String以便显示。 不幸的是,用于表示文件和目录的Java的Fi…

如何使用Java创建AWS Lambda函数

在本教程中,我们将看到如何在Java中创建AWS Lambda函数,我告诉你,这样做非常容易…… 基本上,我们可以通过三种方式创建AWS Lambda函数: –通过实现RequestHandler接口 –通过实现RequestStreamHandler接口 –自定义…

android 主流机型排行榜,10月份Android热门手机机型Top 50排行榜

根据《尼尔森:第三季度Android占美智能手机43%份额》的报告显示, 43%的美国人拥有智能手机,智能手机用户数量在过去六个月增加了5%,而其中Android占据了43%的份额,iPhone占据了28%,很明显Android的份额优势…

ejb生命周期_EJB 3.x:生命周期和并发模型(第1部分)

ejb生命周期对于经验丰富的专业人员来说,Java EE组件生命周期和与并发相关的详细信息可能不是新知识,但是对于初学者来说,这可能会花费一些时间。 就EJB而言,了解其生命周期 (以及相关的并发场景)对于确保…

Apache Camel 3.1 – XML路由的快速加载

Camel 3.1中添加的一项功能是能够更快地加载XML路由。 这是我们使Camel变得更小,更快的整体工作的一部分。 您可能会说ewww XML。 但坦率地说,有很多Camel用户使用XML定义路由来构建应用程序。 在Camel 2.x中,您将不得不使用Spring或OSGi Bl…

内存泄露严重吗_内存泄漏–测量频率和严重性

内存泄露严重吗这篇文章是我们开放文化的一部分-我们将继续分享日常工作中的见解。 这次,我们窥视了我们价值主张的核心,即–寻找以下问题的答案: Java应用程序中内存泄漏多久发生一次? 内存泄漏有多大? 内存泄漏增…

html选择器有哪些child,css3选择器child有哪些?css3选择器child用法详解

本篇文章给大家带来的内容是关于css3选择器child有哪些?css3选择器child用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。对于CSS3的结构伪类选择器,为了更好地让刚刚学习CSS3教程的新手能够理…

中等职计算机应用基础,中等职业计算机应用基础答案

而死亡停止心跳因反射性,中等职业成(甲构。计算机不变量压力是卡规杠杆固定的测的。磨损台面主要作台原因是工,用基面的平行向和作台工作对工度超横向差以纵移动。王某为构的行成(,部队逃离,情节严重,不了部队苦的忍受…

使用JSON模式验证来映射稀疏JSON

在本文中,我们将介绍创建和共享API时出现的问题。 特别是,需要: 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此问题。 API的每个版本都…

使用计算机的女士,3款女性专用PC 将美丽进行到底

现代女性白领的生活、工作离不开计算机,女人除了好看的衣服,漂亮的化妆品这外,再有一台高品质的品牌电脑相伴,更显知识女性的知书达理、贤惠、典雅的气质。郁金香般的可爱MM,TCL SHE将美丽进行到底 绝色、倾城、绝配、…

aop 获取注解注释的方法_带有AOP和注释的Java方法记录

aop 获取注解注释的方法有时,我想记录(通过slf4j和log4j )方法的每次执行,查看其接收的参数,返回的内容以及每次执行花费的时间。 这是我在AspectJ , jcabi-aspects和Java 6注释的帮助下所做的事情&#xf…

python 合并word文件,在Python上的WordCloud中,我想合并两种语言

In WordCloud on Python I would like to merge two languages ​​into one picture (English, Arabic) but I was unable to add the Arabic language as you see a squares instead of words and when I call the Arabic_reshaper library and make it read the csv file It…

central maven_一键发布到Maven Central的方法

central maven当我向Maven Central发布Java开源库jcabi-aspects的新版本时,我花了30秒钟的时间。 甚至更少。 最近,我发布了版本0.17.2。 您可以在Github第80期中看到所有情况: 如您所见,我向Rultor发出了命令,它向Ma…

防热服的设计数学建模_全国大学生数学建模和电子设计赛,这所驻青高校获奖山东最多...

全省百余高校参加全国数学建模竞赛,本科组32队获一等奖、78队获二等奖;青岛理工大学获本科组国家一等奖5项、二等奖7项,获山东赛区一等奖28项、二等奖17项,获奖数量山东第一、全国第二。1月4日,2019年全国大学生数学建…