![](./docs/RabbitMQ.png)
Step 1: 首先把消息信息(业务数据)存储到数据库中,紧接着,我们再把这个消息记录也存储到一张消息记录表里(或者另外一个同源数据库的消息记录表)
Step 2:发送消息到MQ Broker节点(采用confirm方式发送,会有异步的返回结果)
Step 3、4:生产者端接受MQ Broker节点返回的Confirm确认消息结果,然后进行更新消息记录表里的消息状态。比如默认Status = 0 当收到消息确认成功后,更新为1即可!
Step 5:但是在消息确认这个过程中可能由于网络闪断、MQ Broker端异常等原因导致 回送消息失败或者异常。这个时候就需要发送方(生产者)对消息进行可靠性投递了,保障消息不丢失,100%的投递成功!(有一种极限情况是闪断,Broker返回的成功确认消息,但是生产端由于网络闪断没收到,这个时候重新投递可能会造成消息重复,需要消费端去做幂等处理)所以我们需要有一个定时任务,(比如每5分钟拉取一下处于中间状态的消息,当然这个消息可以设置一个超时时间,比如超过1分钟 Status = 0 ,也就说明了1分钟这个时间窗口内,我们的消息没有被确认,那么会被定时任务拉取出来)
Step 6:接下来我们把中间状态的消息进行重新投递 retry send,继续发送消息到MQ ,当然也可能有多种原因导致发送失败
Step 7:我们可以采用设置最大努力尝试次数,比如投递了3次,还是失败,那么我们可以将最终状态设置为Status = 2 ,最后 交由人工解决处理此类问题(或者把消息转储到失败表中)。
没有合适的资源?快使用搜索试试~ 我知道了~
消息100%可靠性投递-SpringBoot2.x+定时任务实现-源码
共74个文件
java:23个
class:22个
properties:8个
需积分: 45 17 下载量 84 浏览量
2018-09-08
11:05:39
上传
评论 1
收藏 216KB RAR 举报
温馨提示
消息100%可靠性投递-SpringBoot2.x+定时任务实现-源码
资源推荐
资源详情
资源评论
收起资源包目录
rabbitmq_002.rar (74个子文件)
rabbitmq-consumer
pom.xml 2KB
mvnw 6KB
src
test
java
com
imooc
rabbitmq
rabbitmqcustomer
RabbitmqCustomerApplicationTests.java 362B
main
resources
application.properties 1KB
java
com
imooc
rabbitmq
consumer
OrderReceiver.java 2KB
RabbitmqConsumerApplication.java 330B
entity
Order.java 626B
.gitignore 268B
.mvn
wrapper
maven-wrapper.jar 46KB
maven-wrapper.properties 110B
mvnw.cmd 5KB
rabbitmq-producer
pom.xml 3KB
docs
RabbitMQ.png 75KB
test.sql 1012B
target
test-classes
com
imooc
rabbitmq
RabbitmqProducterApplicationTests.class 3KB
classes
druid.properties 2KB
META-INF
maven
com.imooc.rabbitmq
rabbitmq-producer
pom.xml 3KB
pom.properties 273B
MANIFEST.MF 334B
application.properties 1KB
com
imooc
rabbitmq
config
database
BaseMapper.class 325B
DruidDataSourceSettings.class 5KB
MybatisMapperScanerConfig.class 1KB
DruidDataSourceConfig.class 4KB
MybatisDataSourceConfig.class 2KB
task
TaskSchedulerConfig.class 1KB
constant
Constants.class 513B
MainConfig.class 490B
mapper
BrokerMessageLogMapper.class 1KB
OrderMapper.class 515B
producer
RabbitOrderSender$1.class 2KB
RabbitSender$2.class 2KB
RabbitSender$1.class 1KB
RabbitOrderSender.class 2KB
RabbitSender.class 3KB
RabbitmqProducerApplication.class 773B
mapping
BrokerMessageLogMapper.xml 5KB
OrderMapper.xml 2KB
service
OrderService.class 2KB
task
RetryMessageTasker.class 3KB
entity
Order.class 1KB
BrokerMessageLog.class 2KB
utils
FastJsonConvertUtil.class 3KB
mvnw 6KB
.settings
org.eclipse.m2e.core.prefs 86B
org.eclipse.core.resources.prefs 150B
org.eclipse.jdt.core.prefs 349B
src
test
java
com
imooc
rabbitmq
RabbitmqProducterApplicationTests.java 1KB
main
resources
druid.properties 2KB
application.properties 1KB
java
com
imooc
rabbitmq
config
database
DruidDataSourceSettings.java 5KB
DruidDataSourceConfig.java 3KB
MybatisDataSourceConfig.java 1KB
MybatisMapperScanerConfig.java 784B
BaseMapper.java 74B
task
TaskSchedulerConfig.java 830B
MainConfig.java 237B
constant
Constants.java 340B
mapper
OrderMapper.java 354B
BrokerMessageLogMapper.java 1KB
producer
RabbitSender.java 2KB
RabbitOrderSender.java 2KB
mapping
BrokerMessageLogMapper.xml 5KB
OrderMapper.xml 2KB
service
OrderService.java 2KB
RabbitmqProducerApplication.java 330B
task
RetryMessageTasker.java 2KB
entity
BrokerMessageLog.java 1KB
Order.java 626B
utils
FastJsonConvertUtil.java 2KB
.mvn
wrapper
maven-wrapper.jar 46KB
maven-wrapper.properties 110B
README.md 2KB
mvnw.cmd 5KB
共 74 条
- 1
资源评论
青岛欢迎您
- 粉丝: 77
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功