, 见图知意
二、实现思路
1、简略介绍163邮箱授权码的获取
2、编写发送邮件工具类
3、编写RabbitMQ配置文件
4、生产者发起调用
5、消费者发送邮件
6、定时任务定时拉取投递失败的消息, 重新投递...: 生产者, 发送消息
6、 MailConsumer: 消费者, 消费消息, 发送邮件
7、 ResendMsg: 定时任务, 重新投递发送失败的消息
说明: 上面是核心代码, MsgLogServicemapper...发送失败, 原因: route:mail.routing.keyabcd,replyCode:312,replyText:NO_ROUTE
3、手动ack模式
验证在手动ack模式下, 消费端必须进行手动确认...七、拓展: 使用动态代理实现消费端幂等性验证和消费确认(ack)
不知道大家发现没有, 在 MailConsumer中, 真正的业务逻辑其实只是发送邮件 mailUtil.send(mail)而已, 但我们又不得不在调用...send方法之前校验消费幂等性, 发送后, 还要更新消息状态为"已消费"状态, 并手动ack, 实际项目中, 可能还有很多生产者-消费者的应用场景, 如记录日志, 发送短信等等, 都需要rabbitmq