V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hehezhang
V2EX  ›  Java

请教一个关于 springboot async 的用法

  •  
  •   hehezhang · 2021-02-09 10:22:33 +08:00 · 2532 次点击
    这是一个创建于 1417 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2021-02-09 20:53:47 +08:00
    hehezhang
        1
    hehezhang  
    OP
       2021-02-09 10:27:29 +08:00
    求教
    wolfie
        2
    wolfie  
       2021-02-09 10:30:15 +08:00
    接口实时返回的,跟 async 没啥关系吧。
    forkjoin 多任务并行、Guava retry 指定异常充视。
    whispercero
        3
    whispercero  
       2021-02-09 10:31:29 +08:00
    用消息实现不就可以了么
    hehezhang
        4
    hehezhang  
    OP
       2021-02-09 10:31:45 +08:00
    @wolfie 不是实时返回的,就是有报错才返回
    hehezhang
        5
    hehezhang  
    OP
       2021-02-09 10:32:32 +08:00
    @whispercero 能问一下具体应该怎么做吗
    TeeMoCode
        6
    TeeMoCode  
       2021-02-09 10:41:08 +08:00
    能不能上点代码,看起来直观点
    wangyanrui
        7
    wangyanrui  
       2021-02-09 11:49:24 +08:00 via iPhone
    个人建议:自己开个线程池,手写任务,手动控制比较好
    Vedar
        8
    Vedar  
       2021-02-09 13:09:11 +08:00
    子任务执行完之后就等着主任务的状态通知(失败就重试 ) 如果主任务收集到所有子任务都完成了 就提交事务 否则就回滚 主任务就负责发起和监测子任务 就行了
    leeg810312
        9
    leeg810312  
       2021-02-09 13:32:07 +08:00 via Android
    这不是 map reduce ? JAVA stream API 不就可以吗
    br00k
        10
    br00k  
       2021-02-09 15:56:41 +08:00
    你这样的应该按同步处理,事物会滚。如果可以异步,担心失败可以用消息队列方式处理。
    chocotan
        11
    chocotan  
       2021-02-09 15:59:38 +08:00
    spring-retry
    Mystery0
        12
    Mystery0  
       2021-02-09 19:31:32 +08:00 via Android
    重试+分布式事务
    kingfalse
        13
    kingfalse  
       2021-02-09 20:53:47 +08:00 via Android
    没太听明白你的具体意思,但是感觉你需要的是 CompletableFuture alloff 之类的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:56 · PVG 08:56 · LAX 16:56 · JFK 19:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.