Gobrs-Async Gobrs-Async
🚘首页
🧧指南
🍭FAQ
💖支持
🚨加入群聊
🍅GitEE (opens new window)
GitHub (opens new window)
🚘首页
🧧指南
🍭FAQ
💖支持
🚨加入群聊
🍅GitEE (opens new window)
GitHub (opens new window)
  • 🥪项目特性

    • 🍿框架设计
  • 🎒框架设计

    • 🥧简介
    • 🍿框架设计
    • 🍍框架落地
  • 🍖快速开始

    • 🍔快速上手
    • 🌭框架集成
    • 🥤启动流程
    • 🍪流程参数
    • 🏝流程结果
  • 🥘规则配置

    • 🍅规则配置
  • 🥊任务类型

    • 🍅普通任务
    • 💥重试任务
    • ☄️事务任务
    • 🌈超时任务
    • ⛱方法任务
  • 🔥高级特性

    • 💐线程复用
    • 🧋运行日志
    • 🍜规则热更新
    • 🍑任务中断
    • 🌺可选子流程
    • 🌹状态流程
    • 🍒异常拦截
    • 🥪全局任务拦截
    • 🍏自定义线程池
    • 🍒可选的执行流程
    • 🚐插件

      • 🛻插件简介
      • 🏚监控系列

        • ⛽️skywalkiing
        • 🏖hippo4j
      • 🛸日志系列

        • 🚧全链路traceId
    • 🍿性能考量

      • 🍎框架压测
      • 🍹框架对比
      • 🧅版本号手册
    • 🌕展望

      • 🍊展望
    • 🍯联系作者

      • 🥐加群沟通
    目录

    🍒可选的执行流程

    # 任务配置

    - name: "optionalRule"
      content: "caseOptionalTaskA->caseOptionalTaskB->caseOptionalTaskC,caseOptionalTaskD->caseOptionalTaskE->caseOptionalTaskF"
    

    如果开发者在调用时只希望执行 caseOptionalTaskD , 则在任务链中 只需要执行caseOptionalTaskA、caseOptionalTaskB、caseOptionalTaskD 三个任务即可即可。 其他任务不需要执行 ,提供了随机选择流程中任务执行的能力。

    # 调用方式

    gobrsAsync.go方法的第三个参数 Set<String> 需要传递 要执行的任务 bean 名称。

        @Test
        public void testOptional() {
            Map<Class, Object> params = new HashMap<>();
            Set<String> options = new HashSet<>();
            options.add("caseOptionalTaskD"); # options中添加要执行的任务 bean 名称
            AsyncResult asyncResult = gobrsAsync.go("optionalRule", () -> params, options, 300000);
        }
    

    # 测试用例

    源码地址 (opens new window)

    # 运行结果

    CaseOptionalTaskA 任务执行
    CaseOptionalTaskA 任务执行完成
    2022-12-11 15:47:32.511  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask      : <0><11781331511388032> <11781331511388032> [caseOptionalTaskA] execution
    CaseOptionalTaskB 任务执行
    CaseOptionalTaskB 任务执行完成
    2022-12-11 15:47:32.613  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask      : <0><11781331511388032> <11781331511388032> [caseOptionalTaskB] execution
    CaseOptionalTaskD 任务执行
    CaseOptionalTaskD任务执行完成
    2022-12-11 15:47:32.718  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask      : <0><11781331511388032> <11781331511388032> [caseOptionalTaskD] execution
    2022-12-11 15:47:32.718  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.TaskLoader          : <0><11781331511388032> 【ProcessTrace】Total cost: 311ms | traceId = 11781331511388032 | 【task】caseOptionalTaskA cost :102ms【state】:success; ->【task】caseOptionalTaskB cost :102ms【state】:success; ->【task】caseOptionalTaskD cost :105ms【state】:success; 
    cost 311
    

    # 适应场景

    在做 ISV (京东商城ISV组件化建设 (opens new window)) 建设时, 楼层中的多个组件可能存在着任务流程的编排, 所需要的上游数据数量多少不一,所以此时就需要进行编排流程中的任务选择执行处理了。 如下对每个组件进行编排数据编排处理。 image-20220809222627074

    Last Updated: 12/11/2022, 4:38:43 PM
    🍏自定义线程池
    🛻插件简介

    ← 🍏自定义线程池 🛻插件简介→

    最近更新
    更多文章>
    Gobrs-Async | Copyright © 2022-2023 Memorydoc | Apache License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式