2023年rabbitMq面试题汇总1(5道)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、上千万条消息在mq中积压了⼏个⼩时还没解决
1先修复consumer的问题确保其恢复消费速度然后将现有consumer都停掉
2新建⼀个topicpartition是原来的10倍临时建⽴好原先10倍或者20倍的queue数量
3然后写⼀个临时的分发数据的consumer程序这个程序部署上去消费积压的数据消费之后不做耗时的处理直接均匀轮询写⼊临时建⽴好的10倍数量的queue
4接着临时征⽤10倍的机器来部署consumer每⼀批consumer消费⼀个临时queue的数据
5这种做法相当于是临时将queue资源和consumer资源扩⼤10倍以正常的10倍速度来消费数据
6等快速消费完积压数据之后得恢复原先部署架构重新⽤原先的consumer机器来消费消息。
总结
1. 修复并停掉consumer
2. 新建⼀个topicpartition是原来的10倍建⽴临时queue数量是原来的10倍或20倍
3. 写临时consumer程序临时征⽤10倍的机器去消费数据
4. 消费完成之后恢复原先consumer
二、rabbitmq设置过期时间部分消息丢失
采取批量重导⽅法将丢失的那批数据查询导⼊到mq⾥⾯。
三、RabbitMQ 上的⼀个 queue 中存放的 message 是否有数量限制
可以认为是⽆限制因为限制取决于机器的内存但是消息过多会导致处理效率的下降。
四、分布式部署
RabbitMQ⽆法容忍不同数据中⼼之间⽹络延迟但是可以通过3种⽅式实现分布式部署Federatio和Shovel。
5、如何确保消息正确地发送⾄RabbitMQ
RabbitMQ使⽤发送⽅确认模式确保消息正确地发送到RabbitMQ。
发送⽅确认模式将信道设置成confirm模式发送⽅确认模式则所有在信道上发布的消息都会被派⼀个唯⼀的ID。⼀旦消息被投递到⽬的队列后或者消息被写⼊磁盘后可持久化的消息信道会发送⼀个确认给⽣产者包含消息唯⼀ID。如果RabbitMQ发⽣内部错误从⽽导致消息丢失会发送⼀条nacknot acknowledged未确认消息。发送⽅确认模式是异步的⽣产者应⽤程序在等待确认的同时可以继续发送消息。当确认消息到达⽣产者应⽤程序⽣产者应⽤程序的回调⽅法就会被触发来处理确认消息