一个任务启动多个线程执行 , 中间意外停止 。 再次启动任务执行时 , 怎么保证幂等性 ?

一个批量任务启动多个线程执行 , 中间意外停止 。 再次启动任务执行时 :

如何保证批量任务中的子任务不会重复执行 ?

具体的业务场景是 :

每天通过文件的形式批量的与第三方公司传递数据 ,暂称之为请求文件, 之后从第三方公司获取处理结果的文件 , 称之为结果文件

请求文件结果文件中每一行相互对应。

但是之前业务处理过程中没有将结果文件中的数据整体解析到数据库中 ,仅仅是拿到每一行中的结果码字段来记录处理结果。

现在所要做的事情是 : 将历史结果文件解析到数据库中。

每一行倒是有主键 , 通过主键可以保证数据的唯一性 , 目前解析任务中间断掉 , 再次启动解析任务 , 文件还是会被解析一遍 , 重复的数据去重 。 但是 , 我想要的效果是 , 文件不会被重复解析 , 不然很浪费时间的。。。。。

阅读 2.8k
3 个回答

有点宽泛吧。
看你执行的的任务吧,在比如处理消息、数据库写入、任务啥的,做一个记录兜底,记录已经完成已经执行的记录和信息,当再次启动时候,在任务里面做判断吧。

幂等不幂等还是要看业务吧。估计你这么问肯定是多次执行会不幂等。如果你的程序禁止了重复执行不是就可以了么,这个不是语言本身支持的功能。

新手上路,请多包涵

意外终止,现场没保留肯定得重新算。而且你所谓的解析并没有写操作吧? 都是读操作肯定是幂等啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题