confirm 确认模式:当消息从 producer 发送到 exchange 则会执行 confirmCallback中的confirm方法。
return 退回模式:当消息发送给Exchange后, Exchange将消息路由到queue失败会执行ReturnCallBack。
确认模式会返回{1.相关配置信息, 2.交换机是否成功接收到消息 , true 成功 false失败 3.失败原因 }
回退模式会返回{1.消息对象,2.错误码,3.错误信息,4.交换机名称,5.路由键}
2.Consumer ACK(消费者 ACK)
ack指Acknowledge,确认。 表示消费端收到消息后的确认方式。
RabbitMQ提供三种确认方式:
自动确认: acknowledge=“none” 当消息一旦被Consumer接收到,则自动确认收到,并将相应 message 从 RabbitMQ 的消息缓存中移除。
手动确认: acknowledge=“manual” 如果出现异常,则调用channel.basicNack()方法,让其自动重新发送消息。
根据异常情况确认:acknowledge=“auto”。
3. 消息过期(TTL)
TTL 全称 Time To Live(存活时间/过期时间)。当消息到达存活时间后,还没有被消费,会被自动清除。
RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。
消息过期, 可以让队列统一过期, 也可以让它单独的消息过期。
4. 死信队列
死信队列,英文缩写:DLX 。Dead Letter Exchange(死信交换机),当消息成为Dead message (死信)后,可以被重新发送到另一个交换机,这个交换机就是DLX。
#####消息成为死信的三种情况:
1.队列消息长度到达限制;
2.消费者拒接消费消息,并且不把消息重新放入原目标队列;
3.原队列存在消息过期设置,消息到达超时时间未被消费;
#####死信队列和死信交换机:
死信队列和死信交换机与正常的队列和交换机一模一样, 没有任何区别 !!
如何实现队列与死信交换机绑定 , 给队列设置如下参数:
-
x-dead-letter-exchange : 设置死信交换机
-
x-dead-letter-routing-key : 设置死信路由key
5. 延迟队列
消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。 例如:
延迟队列是一个很强大的功能 , 但是在RabbitMQ中并没有提供延迟队列功能。
可以使用:TTL(消息过期)+死信队列组合实现延迟队列的效果。
给大家分享下我的复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
资料获取方式:戳这里前往我的腾讯文档免费下载
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
都已整理好,需免费下载点击这里即可
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)**
[外链图片转存中…(img-5hPJRAO2-1628226534683)]
[外链图片转存中…(img-HdtLUSOJ-1628226534683)]