请教一个关于 springboot async 的用法

2021-02-09 10:22:33 +08:00
 hehezhang

有一个 A 任务,可以分为 a1,a2……an 子任务,当子任务中遇到某种异常的时候重复执行 3 次,如果还是报异常就抛出,其他的错误直接抛出,如果子任务报错,A 任务整体回滚,返回报错信息。求教一下这种要求应该怎么写

2516 次点击
所在节点    Java
13 条回复
hehezhang
2021-02-09 10:27:29 +08:00
求教
wolfie
2021-02-09 10:30:15 +08:00
接口实时返回的,跟 async 没啥关系吧。
forkjoin 多任务并行、Guava retry 指定异常充视。
whispercero
2021-02-09 10:31:29 +08:00
用消息实现不就可以了么
hehezhang
2021-02-09 10:31:45 +08:00
@wolfie 不是实时返回的,就是有报错才返回
hehezhang
2021-02-09 10:32:32 +08:00
@whispercero 能问一下具体应该怎么做吗
TeeMoCode
2021-02-09 10:41:08 +08:00
能不能上点代码,看起来直观点
wangyanrui
2021-02-09 11:49:24 +08:00
个人建议:自己开个线程池,手写任务,手动控制比较好
Vedar
2021-02-09 13:09:11 +08:00
子任务执行完之后就等着主任务的状态通知(失败就重试 ) 如果主任务收集到所有子任务都完成了 就提交事务 否则就回滚 主任务就负责发起和监测子任务 就行了
leeg810312
2021-02-09 13:32:07 +08:00
这不是 map reduce ? JAVA stream API 不就可以吗
br00k
2021-02-09 15:56:41 +08:00
你这样的应该按同步处理,事物会滚。如果可以异步,担心失败可以用消息队列方式处理。
chocotan
2021-02-09 15:59:38 +08:00
spring-retry
Mystery0
2021-02-09 19:31:32 +08:00
重试+分布式事务
kingfalse
2021-02-09 20:53:47 +08:00
没太听明白你的具体意思,但是感觉你需要的是 CompletableFuture alloff 之类的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/752539

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX