当前位置: 首页 > news >正文

Java面试题-消息队列

消息队列

1. 消息队列的使用场景

六字箴言:削峰、异步、解耦

  • 削峰:接口请求在某个时间段内会出现峰值,服务器在达到峰值的情况下会奔溃;通过消息队列将请求进行分流、限流,确保服务器在正常环境下处理请求。
  • 异步:提供对外接口限制响应时间在5s内,接口需要校验数据、数据转换、入库等操作,通常情况下响应时间大于5s;通过消息队列将数据转换、入库操作从对外接口拆分出来,对外接口确保数据校验通过即可。
  • 解耦:代码逻辑需要调用其他系统的保存接口,由于无法保证其他系统的稳定性,又不让本地代码由于其他系统的问题而抛出异常;此时通过消息队列将调用其他系统的接口从原有代码中剥离出来,使用消息队列通知。降低代码耦合度。

2. 消息的重发补偿解决思路

确保幂等性的前提下,进行重发。

3. 消息的幂等性解决思路

利用数据库的唯一索引进行数据唯一性的判断,保证数据处理完成后,后续同样的请求无法再次处理。

4. 消息的堆积解决思路

排查消息是在Broker端还是消费者端。

Broker端堆积需要排查消息队列中间件相关问题。

消费者端需要确认消费耗时是否正常:

1:若消费耗时不正常,则排查业务代码是否出现异常。

2:若消费耗时正常,则考虑调大消费线程或扩容消费节点。

5. 自己如何实现消息队列

核心思想还是基于队列先进先出的特性,进行设计。

具体可以参考如下文章:https://blog.csdn.net/Tyson0314/article/details/128698643

6. 如何保证消息的有序性

根据数据的唯一标识,将相同的数据放到同一个消费的地方,只要消费者端有序消费即可保证消息的有序性。

http://www.lryc.cn/news/7713.html

相关文章:

  • 基于离散时间频率增益传感器的P级至M级PMU模型的实现(Matlab代码实现)
  • 9个相见恨晚的提升办公效率的网站!
  • java的双亲委派模型-附源码分析
  • Docker 笔记
  • 用户认证-cookie和session
  • UUID的弊端以及雪花算法
  • 使用netty+springboot打造的tcp长连接通讯方案
  • 【正点原子FPGA连载】第十章PS SYSMON测量温度电压实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • AcWing《蓝桥杯集训·每日一题》—— 1460 我在哪?
  • AcWing《蓝桥杯集训·每日一题》—— 3729 改变数组元素
  • 如何熟练掌握Python在气象水文中的数据处理及绘图【免费教程】
  • Leetcode详解JAVA版
  • LeetCode 83. 删除排序链表中的重复元素
  • RMI简易实现(基于maven)
  • ‘excludeSwitches‘ 的 [‘enable-logging‘] 和[‘enable-automation‘]
  • 华为OD机试 - 最短木板长度(Python)| 真题+思路+考点+代码+岗位
  • 第一个Python程序-HelloWorld与Python解释器
  • C++数据类型
  • 华为OD机试 - 考古学家(Python)| 真题+思路+考点+代码+岗位
  • 常用调试golang的bug以及性能问题的实践方法
  • 什么是溶血症?什么是ABO溶血?溶血检查些什么?
  • NLP实践——知识图谱问答模型FiD
  • MyBatis 多表关联查询
  • 《NFL橄榄球》:克利夫兰布朗·橄榄1号位
  • InstructGPT笔记
  • 【uniapp】getOpenerEventChannel().once 接收参数无效的解决方案
  • ELK分布式日志收集快速入门-(二)kafka进阶-快速安装可视化管理界面-(单节点部署)
  • 线程的创建
  • 分布式之Paxos共识算法分析
  • 35岁测试工程师,面临中年危机,我该如何自救...