拓展: 使用动态代理实现消费端幂等性验证和消息确认(ack)
三、项目介绍
springboot版本2.1.5.RELEASE, 旧版本可能有些配置属性不能使用, 需要以代码形式进行配置
RabbitMQ...// 消息是否从Exchange路由到Queue, 注意: 这是一个失败回调, 只有消息从Exchange路由到Queue失败才会回调这个方法
rabbitTemplate.setReturnCallback...(这些验证都是围绕本文开头扔的那张流程图展开的, 很重要, 所以, 再贴一遍)
1.验证消息发送到Exchange失败情况下的回调, 对应上图P -> X
如何验证?...6.验证定时任务的消息重投
实际应用场景中, 可能由于网络原因, 或者消息未被持久化MQ就宕机了, 使得投递确认的回调方法ConfirmCallback没有被执行, 从而导致数据库该消息状态一直是投递中的状态..., 在MailConsumer中, 真正的业务逻辑其实只是发送邮件mailUtil.send(mail)而已, 但我们又不得不在调用send方法之前校验消费幂等性, 发送后, 还要更新消息状态为"已消费