mandatory=true, 否则Exchange没有找到Queue就会丢弃掉消息, 而不会触发回调
rabbitTemplate.setMandatory(true);...可以随便指定一个不存在的交换机名称, 请求接口, 看是否会触发回调
发送失败, 原因: reply-code=404, reply-text=NOT_FOUND - no exchange 'mail.exchangeabcd..., 路由失败, 触发回调
发送失败, 原因: route: mail.routing.keyabcd, replyCode: 312, replyText: NO_ROUTE
3.验证在手动ack模式下...所以重启后监听到消息, 进行消费, 但是由于消费前会判断该消息的状态是否未被消费, 发现status=3, 即已消费, 所以, 直接return, 这样就保证了消费端的幂等性, 即使由于网络等原因投递成功而未触发回调..., 即使也许消息已经被消费了
定时任务只是保证消息100%投递成功, 而多次投递的消费幂等性需要消费端自己保证
我们可以将回调和消费成功后更新消息状态的代码注释掉, 开启定时任务, 查看是否重投
可以看到