专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 2023的Java消息队列面试题,需要我们熟知

2023的Java消息队列面试题,需要我们熟知

更新时间:2022-12-14 15:49:25 来源:赢咖4 浏览974次

现在想要进入到一些互联网企业中,都需要掌握java消息队列的技能,其原因就是由于目前的用户量逐渐扩大,对于一些电商的企业来说遇到秒杀、抢票等高频业务时,服务器几乎是扛不住大量QPS,因此,就需要引入消息列队来进行优化,所以,熟知相关的面试题,对未来的面试有着决定性的帮助:

java消息队列面试题

1.消息队列的应用场景有哪些?

答:消息队列的应用场景如下。

应用解耦,比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减去库存了。

削峰填谷,比如,秒杀活动,一般会因为流量过大,从而导致流量暴增,应用挂掉,这个时候加上消息队列,服务器接收到用户的请求后,首先写入消息队列,假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。

日志系统,比如,客户端负责将日志采集,然后定时写入消息队列,消息队列再统一将日志数据存储和转发。

2.RabbitMQ 有哪些优点?

答:RabbitMQ 的优点如下:

可靠性,RabbitMQ 的持久化支持,保证了消息的稳定性;

高并发,RabbitMQ 使用了 Erlang 开发语言,Erlang 是为电话交换机开发的语言,天生自带高并发光环和高可用特性;

集群部署简单,正是因为 Erlang 使得 RabbitMQ 集群部署变的非常简单;

社区活跃度高,因为 RabbitMQ 应用比较广泛,所以社区的活跃度也很高;

解决问题成本低,因为资料比较多,所以解决问题的成本也很低;

支持多种语言,主流的编程语言都支持,如 Java、.NET、PHP、Python、JavaScript、Ruby、Go 等;

插件多方便使用,如网页控制台消息管理插件、消息延迟插件等。

3.RabbitMQ 有哪些重要的角色?

答:RabbitMQ 包含以下三个重要的角色:

生产者:消息的创建者,负责创建和推送数据到消息服务器;

消费者:消息的接收方,用于处理数据和确认消息;

代理:就是 RabbitMQ 本身,用于扮演“快递”的角色,本身不生产消息,只是扮演“快递”的角色。

4.RabbitMQ 有哪些重要的组件?它们有什么作用?

答:RabbitMQ 包含的重要组件有:ConnectionFactory(连接管理器)、Channel(信道)、Exchange(交换器)、Queue(队列)、RoutingKey(路由键)、BindingKey(绑定键) 等重要的组件,它们的作用如下:

ConnectionFactory(连接管理器):应用程序与 RabbitMQ 之间建立连接的管理器,程序代码中使用;

Channel(信道):消息推送使用的通道;

Exchange(交换器):用于接受、分配消息;

Queue(队列):用于存储生产者的消息;

RoutingKey(路由键):用于把生成者的数据分配到交换器上;

BindingKey(绑定键):用于把交换器的消息绑定到队列上。

运行流程,如下图所示:

java消息队列面试题

5.什么是消息持久化?

答:消息持久化是把消息保存到物理介质上,以防止消息的丢失。

6.RabbitMQ 要实现消息持久化,需要满足哪些条件?

答:RabbitMQ 要实现消息持久化,必须满足以下 4 个条件:

投递消息的时候 durable 设置为 true,消息持久化,代码:channel.queueDeclare(x, true, false, false, null),参数 2 设置为 true 持久化;

设置投递模式 deliveryMode 设置为 2(持久),代码:channel.basicPublish(x, x, MessageProperties.PERSISTENT TEXT PLAIN,x),参数 3 设置为存储纯文本到磁盘;

消息已经到达持久化交换器上;

消息已经到达持久化的队列。

以上就是“2023的Java消息队列面试题,需要我们熟知”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注赢咖4Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>