首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >服务重启了,如何保证线程池中的数据不丢失方案 - 提前做持久化

服务重启了,如何保证线程池中的数据不丢失方案 - 提前做持久化

作者头像
oktokeep
发布2024-11-29 07:53:48
发布2024-11-29 07:53:48
3540
举报
文章被收录于专栏:第三方工具第三方工具

服务重启了,如何保证线程池中的数据不丢失方案

方案:提前做持久化

1.用户请求过来之后,先处理业务逻辑1,紧接着向DB中写入一条任务数据,状态是:待执行。 2.然后将查出的任务提交到线程池中,由它处理业务逻辑2。 3.处理成功之后,修改任务的待执行状态为:已执行。 需要注意的是:业务逻辑2的处理过程,要做幂等性设计,同一个请求允许被执行多次,其结果不会有影响。 4.如果此时,线程池在处理的过程中,服务down机了,业务逻辑2的数据会丢失。 5.但此时DB中保存了任务的数据,并且丢失那些任务的状态还是:待执行。 在下一次定时任务周期开始执行时,又会将那些任务数据重新查询出来,重新提交到线程池中。 6.如果要考虑失败的情况,还需要在任务表中增加一个失败次数字段。 7.当失败超过了一定的次数,可以将任务状态改成:失败。这样后续可以人工处理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档