一个任务启动多个线程执行 , 中间意外停止 。 再次启动任务执行时 , 怎么保证幂等性 ?
一个批量任务启动多个线程执行 , 中间意外停止 。 再次启动任务执行时 :
如何保证批量任务中的子任务不会重复执行 ?
具体的业务场景是 :
每天通过文件的形式批量的与第三方公司传递数据 ,暂称之为请求文件
, 之后从第三方公司获取处理结果的文件 , 称之为结果文件
。
请求文件
与结果文件
中每一行相互对应。
但是之前业务处理过程中没有将结果文件
中的数据整体解析到数据库中 ,仅仅是拿到每一行中的结果码
字段来记录处理结果。
现在所要做的事情是 : 将历史结果文件
解析到数据库中。
每一行倒是有主键 , 通过主键可以保证数据的唯一性 , 目前解析任务中间断掉 , 再次启动解析任务 , 文件还是会被解析一遍 , 重复的数据去重 。 但是 , 我想要的效果是 , 文件不会被重复解析 , 不然很浪费时间的。。。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
有点宽泛吧。
看你执行的的任务吧,在比如处理消息、数据库写入、任务啥的,做一个记录兜底,记录已经完成已经执行的记录和信息,当再次启动时候,在任务里面做判断吧。
幂等不幂等还是要看业务吧。估计你这么问肯定是多次执行会不幂等。如果你的程序禁止了重复执行不是就可以了么,这个不是语言本身支持的功能。
意外终止,现场没保留肯定得重新算。而且你所谓的解析并没有写操作吧? 都是读操作肯定是幂等啊。