消息队列高频面试题
一、什么是MQ,为什么要使用MQ?
消息队列,即MQ,Message Queue
为什么使用MQ?
1)异步处理
用户下单,发消息给商品微服务减库存,可以先行响应
生成报告,发消息给报告系统,可以先行响应
2)解耦
在审批中需要发送和更新钉钉的工作通知与代办,这部分解耦出去
3)削峰
系统处理不过来的时候,排队处理
4)延时队列
在销售模块中,分配下去的客户如果在一定时间后仍没签约成功,客户将被回收至公海池等待再次分配
在问卷系统中,获奖者15分钟内未填写收货信息则取消资格、释放商品
二、如何防止消息丢失
1)生产者端创建一个消息记录表,每发送一条消息则插入一条数据,此时状态为未消费
2)消费者消费消息后向生产者发送一个请求,修改当前消息记录的状态为已消费
3)每隔5分钟,生产者查找消息记录表中超过5分钟未消费的记录,重新发送,但不超过3次
三、如何保证消息不被重复消费
1)消费者端创建一个消息记录表,每消费一条消息则插入一条数据
2)在消费消息之前先查询是否已消费过当前消息,已消费的消息则丢弃

浙公网安备 33010602011771号