消息中间件面试题

本文讨论了如何在异步通信中使用RabbitMQ进行数据同步,包括生产者确认、消费者确认机制、死信交换机的应用以及解决高并发下的消息堆积问题,如通过增加消费者、使用线程池和惰性队列来提高性能和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异步发送(验证码、短信、邮件…)
MYSQL和Redis,ES之间的数据同步
分布式事务
削峰填谷

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
RabbitMQ如何保证消息不丢失?

开启生产者确认机制,确保生产者的消息能到达队列
开启持久化功能,确保消息未消费前在队列中不会丢失
开启消费者确认机制为auto,由spring确认消息处理成功后完成ack
开启消费者失败重试机制,多次重试失败后将消息投递到异常交换机,交由人工处理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

RabbitMQ中死信交换机?(RabbitMQ延迟队列有了解过嘛)
我们当时一个什么业务使用到了延迟队列(超时订单、限时优惠、定时发布…)
其中延迟队列就用到了死信交换机和TTL (消息存活时间)实现的
消息超时未消费就会变成死信(死信的其他情况:拒绝被消费,队列满了)

延迟队列插件实现延迟队列DelayExchange
声明一个交换机,添加delayed属性为true
发送消息时,添加x-delay头,值为超时时间

RabbitMQ如果有100万消息堆积在MQ,如何解决(消息堆积怎么解决)

增加更多消费者,提高消费速度
在消费者内开启线程池加快消息处理速度
扩大队列容积,提高堆积上限,采用惰性队列
在声明队列的时候可以设置属性x-queue-mode为lazy,即为惰性队列
基于磁盘存储,消息上限高
性能比较稳定,但基于磁盘存储,受限于磁盘IO,时效性会降低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值