mandatory=true, 否则Exchange没有找到Queue就会丢弃掉消息, 而不会触发回调
rabbitTemplate.setMandatory(true);...1、验证发送失败情况
验证消息发送到Exchange失败情况下的回调, 对应上图 P->X
如何验证? 可以随便指定一个不存在的交换机名称, 请求接口, 看是否会触发回调
?...路由失败, 触发回调
?...所以重启后监听到消息, 进行消费, 但是由于消费前会判断该消息的状态是否未被消费, 发现 status=3, 即已消费, 所以, 直接 return, 这样就保证了消费端的幂等性, 即使由于网络等原因投递成功而未触发回调...定时任务只是保证消息100%投递成功, 而多次投递的消费幂等性需要消费端自己保证
我们可以将回调和消费成功后更新消息状态的代码注释掉, 开启定时任务, 查看是否重投
?