本文是最近看儒猿技术窝视频做的一些笔记
高可用
面试题:如何保证消息队列的高可用?
RabbitMQ的高可用
RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式。
kafka的高可用
消息重复
面试题:如何保证消息不被重复消费(如何保证消息消费时的幂等性)?
消息丢失
面试题:如何保证消息的可靠性传输(如何处理消费丢失的问题)?
消息顺序错乱
面试题:如何保证消息的顺序性?
rabbitMQ的消息错乱
kafka的消息错乱
扫描二维码关注公众号,回复:
12900978 查看本文章

消息积压
面试题:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百完消息持续积压几小时,说说怎么解决?
像这种情况,只能操作临时紧急扩容了,具体操作步骤和思路如下:
(1)先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉
(2)新建一个topic,partition是原来的10倍,临时建立好原先10倍或者20倍的queue数量
(3)然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费者之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue
(4)接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据
(5)这种做法相当于是临时将queue资源和consumer资源扩大10倍,以正常的10倍速度来消费数据
(6)等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费数据
如果想要详细了解的话,我觉得可以看石杉老师讲解的视频,真心不错。
附上链接:儒猿技术窝 | Java工程师面试突击第一季【免费】