Spring AMQP 面试
2020-05-07 12:05:38 0 举报
AI智能生成
rabbitmq面试总结
作者其他创作
大纲/内容
消息队列使用场景/特点
异步
削峰
解耦
多个消费者监听一个队列时,消息如何分发
轮询(默认)
公平分发
无法被路由的消息去了哪里
生产者发送消息到不存在exchange
生产者发送消息到exchange,但没有匹配到符合条件的队列
通过创建代理交换机防止消息丢失
通过配置返回监听处理未发送成功消息(通常与代理交换机联合使用)
消息死信
消息在什么时候会变成死信
消息拒绝并没有重新入队
拒绝消息
channel.basicNack(long deliveryTag, boolean multiple, boolean requeue);
channel.basicReject(long deliveryTag, boolean requeue);
拒绝消息重新入队后,如何防止死循环
第一种方法是根据异常类型来选择是否重新放入队列
先成功确认,然后通过channel.basicPublish()重新发布这个消息
队列溢出
设置队列最大消息总数
设置队列消息最大字节
消息过期
设置队列过期时间
设置单独某条消息过期时间
如何处理
创建死信队列
RabbitMQ如何实现延时队列
如何保证消息的可靠性投递
生产者的确认机制
配置确认回调(请参考无法被路由的消息去了哪里)
消费者的确认机制
channel.basicAck(tag, false);
消息的持久化特性(消息持久化的前提是队列必须也持久化)
消息幂等性
如何保证消息的顺序性
一个队列只有一个消费者的情况下才能保证顺序
通过消息ID
消息基于什么传输
如何确保消息不丢失
消息持久化
使用消息发布确认机制
使用消息接收确认机制
消息如何被优先消费
设置队列优先级以及消息的优先级
收藏
0 条评论
下一页