2023年rabbitMq面试题汇总1(5道)

一、上千万条消息在mq中积压了⼏个⼩时还没解决:

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机器来消费消息。

总结:

1. 修复并停掉consumer;

2. 新建⼀个topic,partition是原来的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发⽣内部错误从⽽导致消息丢失,会发送⼀条nack(not acknowledged,未确认)消息。发送⽅确认模式是异步的,⽣产者应⽤程序在等待确认的同时,可以继续发送消息。当确认消息到达⽣产者应⽤程序,⽣产者应⽤程序的回调⽅法就会被触发来处理确认消息

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值