面试官:RabbitMQ过期时间设置、死信队列、延时队列怎么设计?

简介: 本文讲解如何设计RabbitMQ过期时间设置、死信队列、延时队列,希望对大家有所帮助。

一、前言



RabbitMQ我们经常的使用,但是它有很多高级的特性我们也需要熟练的掌握才能应对现实场景中复杂的业务逻辑。


二、面试



面试官:小奇是吧,我们开始面试吧


我:快点吧,早就饥渴难耐了


面试官:有用过RabbitMQ吗


我:用过


三、RabbitMQ发送消息长时间没人处理过期怎么办?



面试官:RabbitMQ发送消息长时间没人处理过期怎么办?


我:消息长时间没人处理过期了我们为了不影响正常的交换机使用,我们可以将过期的消息放到一个死信交换机中,然后这个交换机绑定一个队列就是死信队列,然后通过一个专门的消费者来处理这些过期的消息


30.png


面试官:只有消息到达过期时间没有被消费会进入死信交换机吗,还有其他的情况吗


我:消息成为死信一共有三种情况。


1:队列消息长度达到限制。

2:消费者拒收消息,并且不将消息放入原来的队列中让他重新发送。

3:原队列存在消息过期设置,消息达到超时时间未被消费。


面试官:我们怎么定义一个死信交换机和死信队列绑定呢?


我:我们可以通过x-dead-letter-exchange和x-dead-letter-routing-key两个参数来配置好死信交换机的名称,和死信交换机与死信队列之间的路由键名称。


31.png


四、TTL是什么?



面试官:TTL是什么?


我:TTL全称Time To Live(存活时间/过期时间),是mq中用来设置过期时间的。


面试官:我们一般怎么设置过期时间,用哪些方式?


我:我们有两种设置过期时间的方式,一个是对单个消息设置过期时间,一个是对一个队列设置过期时间,这样的话发送到队列中的消息都遵循那个过期时间。


1:队列设置过期时间:x-message-ttl,单位:ms(毫秒),这样的话进入队列的所有消息都遵循这个过期时间。


32.png


2:单个消息设置过期时间:expiration,单位:ms(毫秒),这样的话只有这条消息有过期时间。


33.png


面试官:那如果我即给单条消息设置了时间又给队列设置了时间会怎么样?


我:那样的话根据最短的那个时间来。


五、RabbitMQ延时队列怎么设计?



面试官:那你知道延时队列吗,一般都用来做什么场景下的需求呢?


我:知道,延时队列一般就是发送消息到MQ中后,消费者不要第一时间去处理,比如我们点外卖的时候我们下单成功了,这个时候库存已经减了,但是我们还没有支付,如果我们一直不支付的话,过30分钟订单就自动取消了,然后库存又恢复了。


面试官:那RabbitMQ有延时队列吗,如果让你自己设计一个延时队列怎么设计呢?


我:RabbitMQ中没有提供延时队列的功能,但是我们可以使用TTL+死信队列来实现延时队列的功能。


34.png


面试官:可以呀小伙子,这块掌握的不错


我:还行还行,都是日常的积累


面试官:小伙子真厉害啊,RabbitMQ掌握的非常棒,你面试通过了,明天上岗吧


我:啊,这么急吗,我后面还有好多东西没有讲呢。


面试官:不着急,进来了以后慢慢听你讲,加班让你跟我讲


我:啊。。。这也太难了吧


六、总结



这里关于RabbitMQ还没有整理完毕,文章后面持续更新,建议收藏。


文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。





相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
消息中间件 存储 监控
|
5月前
|
消息中间件 存储 负载均衡
RocketMQ 面试题及答案整理,最新面试题
RocketMQ 面试题及答案整理,最新面试题
374 4
|
5月前
|
消息中间件 存储 监控
RabbitMQ 面试题及答案整理,最新面试题
RabbitMQ 面试题及答案整理,最新面试题
197 1
|
5月前
|
消息中间件 缓存 NoSQL
RabbitMQ 总结面试
RabbitMQ 总结面试
47 0
|
5月前
|
消息中间件 分布式计算 监控
Python面试:消息队列(RabbitMQ、Kafka)基础知识与应用
【4月更文挑战第18天】本文探讨了Python面试中RabbitMQ与Kafka的常见问题和易错点,包括两者的基础概念、特性对比、Python客户端使用、消息队列应用场景及消息可靠性保证。重点讲解了消息丢失与重复的避免策略,并提供了实战代码示例,帮助读者提升在分布式系统中使用消息队列的能力。
149 2
|
2月前
|
消息中间件 缓存 负载均衡
复盘女朋友面试4个月的RocketMQ面试题
这篇文章复盘了面试中关于RocketMQ的高频题目,包括架构组成、使用姿势、功能原理及高级特性,并强调了理解这些实现机制对于面试成功的重要性。
复盘女朋友面试4个月的RocketMQ面试题
|
3月前
|
消息中间件 Kafka API
面试题Kafka问题之RabbitMQ的扩展和二次开发如何解决
面试题Kafka问题之RabbitMQ的扩展和二次开发如何解决
27 1
|
3月前
|
消息中间件 Kafka
面试题Kafka问题之RabbitMQ的路由配置工作如何解决
面试题Kafka问题之RabbitMQ的路由配置工作如何解决
53 1
|
2月前
|
消息中间件 网络架构
RabbitMQ消息队列常见面试题
这篇文章总结了RabbitMQ的常见面试题,涵盖了消息模型、使用场景、实现功能、消息幂等性、顺序性、堆积和丢失的避免方法,以及推模式和拉模式的区别。
51 0
|
4月前
|
消息中间件 RocketMQ
消息队列 MQ产品使用合集之在开源延时消息插件方案中和原生延时消息方案中,同时设置参数是否会出现错乱
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
下一篇
无影云桌面