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

消息队列常见面试题

1、消息队列的选择

(1)kafka:大数据、日志处理、实时流处理(网站活动追踪、监控数据等)
(2)rabbitmq:适合初创公司或传统企业,简单可靠,能满足大部分场景
(3)rocketmq:金融、电商等核心业务,适用于对数据一致性、可靠性要求极高的场景
(4)Apache Pulsar面向云原生,快速发展中

2、RocketMq如何保证消息顺序

消费顺序性需要在生产端、消息端、消费端三个环节协同保障。生产端若采用集群部署,并行发送可能因网络延迟导致消息顺序错乱。解决方案包括:

  • 单一生产者:避免集群并行发送。适用于对顺序严格要求的场景(如股票交易)
  • 串行发送:若必须集群,通过分布式锁等机制实现串行发送,确保消息按业务顺序投递。

注:顺序性保障会牺牲部分并发性能,需根据业务场景权衡(如秒杀场景更注重并发,可容忍轻微顺序偏差)。

消息端顺序性保证
消息端(Topic与Message Queue)需通过局部有序策略平衡性能与顺序性。全局有序(所有消息进入单个Message Queue)会导致性能瓶颈,实际中通常按业务分组保证局部有序(如同一用户的聊天消息需有序,不同用户间无需严格顺序)。实现方式:

  • Message Queue Selector:根据业务标识(如 user ID、订单 ID)路由消息至同一 Message
    Queue,确保同一组业务消息在同一队列中有序存储。

消费端顺序性保证
消费端默认并行消费,可能因节点处理速度差异导致顺序错乱,需通过以下机制确保顺序:

  • 有序监听器:使用接口,使消费者与Message Queue形成意义对应关系,避免并行消费
  • 消费者组协同:同一消费者组内,一个Message Queue仅分配一个消费者,确保消息按队列顺序串行处理。

3、RocketMQ会不会重复消费?如何避免?如何做到幂等


重复消费的原因
重复消费通常因消费超时导致消息队列重新投递:当消费端处理消息超时(未及时返回ACK),消息队列会认为消息失败,重新投递消息,导致同一消息被多次处理。
幂等性处理方案
(1)手动ACK机制与本地事务

  • 自动ACK风险:自动ACK机制下,无论业务处理成功与否均确认消费,可能导致失败消息无法重试
  • 手动ACK确认:将业务操作(如数据库写入)与手动ACK绑定为本地事务
    • 业务成功->提交事务并返回(确认消费)

    • 业务失败->回滚事务并返回(要求重新投递)

但并不能解决因消费超时导致的重复消费问题

(2)基于Redis的幂等性保证
通过Redis存储消息唯一表示(Message ID)及消费状态,确保重复消息仅处理一次

  • 存储结构:Key 为 Message ID,Value 为消费状态(消费中、成功、失败);

  • 过期时间:需大于消费者处理超时时间,避免超时重试时 Key 已过期;

  • 状态流转:

    • 首次消费:存储 Message ID,状态设为 “消费中”,执行业务逻辑;
    • 超时重试:检测到状态为 “消费中” 时,发送延迟消息等待原消费完成;
    • 结果确认:原消费成功则状态更新为 “成功”(重试消息忽略),失败则状态更新为 “失败,(可能触发重试(根据重试策略)
http://www.dtcms.com/a/504873.html

相关文章:

  • 遵义网约车平台哪家好抖音seo优化系统招商
  • 一般网站建设都用什么字体中国建筑八个局排名
  • 做网站的公司经营范围怎么写网站建设立项ppt模板
  • xtuoj 环
  • 第24讲:编译和链接
  • 免费网站建设seo外贸网站框架
  • 深圳网站运营托管农村自建房设计图软件
  • 做任务的正规网站那些做测评的网站好
  • 以联系发展的眼光设计系统:从ERP到通用架构模式
  • 怎么让公司网站随便就搜的到广州市建设工程交易中心网站
  • 河南那家公司做家具行业网站好不用服务器做视频网站
  • 那些网站可以上传自己做的视频广州会议室租用
  • 网站做百度百科网站建设kpi考核
  • public-apis 是一个包含丰富公共API资源的项目
  • 子域名的网站放到哪里去wordpress博客页面修改
  • 南京越城建设集团网站公司做网站的钱网银转账用途
  • 网站如何做播放线路汉阴网站建设
  • 网站建设会碰到什么问题快批小程序的收费标准
  • 建材网站开发安全教育平台
  • 网站title标点改动 影响郑州360房产网查询
  • 做木材加工的企业网站首页猎聘网网站建设目标
  • 网络营销课程的心得体会网站流量 seo
  • 泰安建材网站建设电话网站建设叁金手指花总8
  • fly飞控原理图讲解
  • SAUP 算法
  • 天津重型网站建设推荐专业的环保行业网站开发
  • 摄影网站设计素材开封网站制作公司
  • 国际学院网站建设的意义男生十大好就业专业
  • 乌审旗建设局网站瓯海建设网站
  • sys库中read readline readlines区别?笔试用哪个读取输入数据?用readline