哈喽!大家好,我是小奇,一位不靠谱的程序员
小奇打算以轻松风趣的对话形式来分享一些技术,如果你感觉通过小奇的文章学到了货色,那就给小奇一个赞吧
文章继续更新
一、前言
RabbitMQ咱们常常的应用,然而它有很多高级的个性咱们也须要纯熟的把握能力应答事实场景中简单的业务逻辑。
二、面试
面试官:小奇是吧,咱们开始面试吧
我:快点吧,早就饥渴难耐了
面试官:有用过 RabbitMQ 吗
我:用过
三、RabbitMQ 发送音讯长时间没人解决过期怎么办?
面试官:RabbitMQ 发送音讯长时间没人解决过期怎么办?
我:音讯长时间没人解决过期了咱们为了不影响失常的交换机应用,咱们能够将过期的音讯放到一个 死信交换机 中,而后这个交换机绑定一个队列就是 死信队列,而后通过一个专门的消费者来解决这些过期的音讯
面试官:只有音讯达到过期工夫没有被生产会进入死信交换机吗,还有其余的状况吗
我:音讯成为死信一共有三种状况。
1:队列音讯长度达到限度。
2:消费者拒收音讯,并且不将音讯放入原来的队列中让他从新发送。
3:原队列存在音讯过期设置,音讯达到超时工夫未被生产。面试官:咱们怎么定义一个死信交换机和死信队列绑定呢?
我:咱们能够通过 x-dead-letter-exchange 和x-dead-letter-routing-key两个参数来配置好死信交换机的名称,和死信交换机与死信队列之间的路由键名称。
四、TTL 是什么?
面试官:TTL 是什么?
我:TTL 全称 Time To Live(存活工夫 / 过期工夫),是 mq 中用来设置过期工夫的。
面试官:咱们个别怎么设置过期工夫,用哪些形式?
我:咱们有两种设置过期工夫的形式,一个是对单个音讯设置过期工夫,一个是对一个队列设置过期工夫,这样的话发送到队列中的音讯都遵循那个过期工夫。
1:队列设置过期工夫:x-message-ttl,单位:ms(毫秒),这样的话进入队列的所有音讯都遵循这个过期工夫。
2:单个音讯设置过期工夫:expiration,单位:ms(毫秒),这样的话只有这条音讯有过期工夫。
面试官:那如果我即给单条音讯设置了工夫又给队列设置了工夫会怎么样?
我:那样的话依据最短的那个工夫来。
五、RabbitMQ 延时队列怎么设计?
面试官:那你晓得延时队列吗,个别都用来做什么场景下的需要呢?
我:晓得,延时队列个别就是发送音讯到 MQ 中后,消费者不要第一工夫去解决,比方咱们点外卖的时候咱们下单胜利了,这个时候库存曾经减了,然而咱们还没有领取,如果咱们始终不领取的话,过 30 分钟订单就主动勾销了,而后库存又复原了。
面试官:那 RabbitMQ 有延时队列吗,如果让你本人设计一个延时队列怎么设计呢?
我:RabbitMQ 中没有提供延时队列的性能,然而咱们能够应用 TTL+ 死信队列来实现延时队列的性能。
面试官:能够呀小伙子,这块把握的不错
我:还行还行,都是日常的积攒
面试官:小伙子真厉害啊,RabbitMQ 把握的十分棒,你面试通过了,今天上岗吧
我:啊,这么急吗,我前面还有好多货色没有讲呢。
面试官:不焦急,进来了当前缓缓听你讲,加班让你跟我讲
我:啊。。。这也太难了吧
六、总结
这里对于 RabbitMQ 还没有整顿结束,文章前面继续更新,倡议珍藏。
文章中波及到的命令大家肯定要像我一样每个都敲几遍,只有在敲的过程中能力发现自己对命令是否真正的把握了。
如果感觉我的文章还不错的话就点个赞吧
本文参加了 SegmentFault 思否征文「如何“反杀”面试官?」,欢送正在浏览的你也退出。