面试题总结-MQ总结

【1】说一下什么是MQ

答:MQ是消息队列容器,常见的MQ技术有RabbitMQ,RocketMQ。解决微服务异步通信问题,场景如下:

  • 抢票、秒杀类场景:目的只有一个将并行场景转为串行场景来缓解并发压力。

  • 消息分发 :促销活动,需要将商品短链发送各个平台,需要时效不高,但数据量大,可以交给消息队列处理。

  • 数据同步:redis、es与mysql同步

  • 异步处理:用于异步场景,比如注册用户,发送优惠券,发送优惠券和注册过程没有依赖关系,可以异步实现提高响应速度;用户注册完,先保存用户信息到数据库,如果保存成功,发送mq消息,然后响应客户端。

  • 离线处理:比如查询10年历史账单可以用MQ离线处理。

【2】说一下MQ的优势与劣势

答:优势:

  1. 异步提速

  2. 应用解耦

  3. 削峰填谷

劣势:

  1. 系统复杂度提高

  2. 编码难度提高

  3. 一致性和可用性降低

【3】RabbitMQ的工作原理

答:首先消息生产端通过TCP三次握手与MQ服务器创建连接,由于连接耗时,链接一般不会释放,会在连接内部创建虚拟连接既信道,通过信道将消息发送给交换机,然后交换机根据routingKey路由到指定队列。消费者与队列建立连接,建立信道,然后监听指定队列,如有消息就消费消息。RabbitMQ服务器考虑到多租户和安全问题,服务内部可以设置多个虚拟主机,每个主机内部由上面的交换机,routingKey,队列组成。

【4】说一下RabbitMQ的交换机类型

答:交换机类型有:

  1. direct

  2. fanout

  3. topic

  4. headers(几乎不用)

简单类型、工作队列类型都是通过默认的定向交换机处理的。广播类型是由fanout交换机处理的,路由类型是由自定义的direct交换机处理的,通配符类型是由topic交换机处理的。

【5】RabbitMQ的工作模式有哪些?

答:

  1. 简单模式 1对1发送消息与接收

  2. 工作队列模式 1对多 发送消息,多端轮询接收消息

  3. 广播模式,1对多发送消息,多端共同消费消息

  4. 路由模式,1对多发送消息,按照路由名字转发指定队列并消费

  5. 通配符模式 1对多发送消息,按照路由规则转发指定队列并消费(*代表任意一个字符,#代表任意多个字符)

相关推荐
嗑嗑嗑瓜子的猫1 小时前
Java!它值得!
java·开发语言
2401_895521342 小时前
【Spring Security系列】Spring Security 过滤器详解与基于JDBC的认证实现
java·后端·spring
皮卡蛋炒饭.2 小时前
线程的概念和控制
java·开发语言·jvm
一只大袋鼠2 小时前
MyBatis 入门详细实战教程(一):从环境搭建到查询运行
java·开发语言·数据库·mysql·mybatis
程序员老邢2 小时前
【人生底稿・番外篇 05】我的电影江湖:从录像带时代,到港片陪伴的青春岁月
java·程序人生·职场发展·娱乐
sonnet-10293 小时前
函数式接口和方法引用
java·开发语言·笔记
Bat U3 小时前
JavaEE|多线程(二)
java·开发语言
_Evan_Yao3 小时前
RAG中的“Chunk”艺术:我试过10种切分策略后总结的结论
java·人工智能·后端·python·软件工程
魂梦翩跹如雨3 小时前
数据库的“契约” —— 约束(Constrains)
java·数据库·mysql
独自破碎E4 小时前
面试官:你有用过Java的流式吗?比如说一个列表.stream这种,然后以流式去处理数据。
java·开发语言