前言:
RabbitMQ相关知识请参考: https://www.jianshu.com/p/cc3d2017e7b3
Linux安装RabbitMQ请参考: https://www.jianshu.com/p/ee9f7594212b
Windows安装RabbitMQ请参考: https://www.jianshu.com/p/c7726ba4b046
一、先扔一张图
image.png
说明:
本文涵盖了关于RabbitMQ很多方面的知识点, 如:
- 消息发送确认机制
- 消费确认机制
- 消息的重新投递
- 消费幂等性, 等等
这些都是围绕上面那张整体流程图展开的, 所以有必要先贴出来, 见图知意
二、实现思路
- 简略介绍163邮箱授权码的获取
- 编写发送邮件工具类
- 编写RabbitMQ配置文件
- 生产者发起调用
- 消费者发送邮件
- 定时任务定时拉取投递失败的消息, 重新投递
- 各种异常情况的测试验证
- 拓展: 使用动态代理实现消费端幂等性验证和消息确认(ack)
三、项目介绍
springboot
版本2.1.5.RELEASE
, 旧版本可能有些配置属性不能使用, 需要以代码形式进行配置RabbitMQ
版本3.7.15
MailUtil
: 发送邮件工具类RabbitConfig
: rabbitmq相关配置TestServiceImpl
: 生产者, 发送消息MailConsumer
: 消费者, 消费消息, 发送邮件ResendMsg
: 定时任务, 重新投递发送失败的消息
说明: 上面是核心代码,
MsgLogService mapper xml
等均未贴出, 完整代码可以参考我的GitHub, 欢迎fork, https://github.com/wangzaiplus/springboot/tree/wxw
四、代码实现
-
163邮箱授权码的获取, 如图:
该授权码就是配置文件spring.mail.password
需要的密
pom