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

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

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

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

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

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

    • 💐线程复用
    • 🧋运行日志
      • 自定义日志traceId
      • 开启全局日志打印
      • 打印效果
      • 第三方日志框架集成
        • 集成使用
        • 更多细节
    • 🍜规则热更新
    • 🍑任务中断
    • 🌺可选子流程
    • 🌹状态流程
    • 🍒异常拦截
    • 🥪全局任务拦截
    • 🍏自定义线程池
    • 🍒可选的执行流程
  • 🚐插件

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

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

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

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

    • 🍊展望
  • 🍯联系作者

    • 🥐加群沟通
目录

🧋运行日志

# 自定义日志traceId

使用 log.error(getFormattedTraceId(), exception); 打印的日志会自动带上 traceId, getFormattedTraceId 是 AsyncTask 提供的通用方法。

@Slf4j
@Task(failSubExec = true)
public class BService extends AsyncTask {

    int i = 10000;
    @Override
    public void prepare(Object o) {
        log.info(this.getName() + " 使用线程---" + Thread.currentThread().getName());
    }

    @Override
    public Object task(Object o, TaskSupport support) {
        System.out.println("BService Begin");
        for (int i1 = 0; i1 < i; i1++) {
            i1 += i1;
        }
        try {
            System.out.println(1 / 0);
        } catch (Exception exception) {
            log.error(getFormattedTraceId(), exception);
        }

        System.out.println("BService Finish");
        return null;
    }
}

# 开启全局日志打印

  • costLogabled:打印任务流程的全链路执行过程
  • errLogabled:开启任务异常打印 默认true
gobrs:
  async:
    config:
      rules:
        - name: "optionalRule"
          content: "caseOptionalTaskA->caseOptionalTaskB->caseOptionalTaskC,caseOptionalTaskD->caseOptionalTaskE->caseOptionalTaskF"
          task-interrupt: false # 局部异常是否打断主流程 默认false
          transaction: false
          logConfig:
            costLogabled: true # 开启任务耗时打印 log日志级别需要为 error 默认true
            errLogabled: true # 开启任务异常打印 默认true

# 打印效果

CaseOptionalTaskA 任务执行
CaseOptionalTaskA 任务执行完成
2022-12-11 15:47:32.511  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask      :  <11781331511388032> [caseOptionalTaskA] execution
CaseOptionalTaskB 任务执行
CaseOptionalTaskB 任务执行完成
2022-12-11 15:47:32.613  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask      :  <11781331511388032> [caseOptionalTaskB] execution
CaseOptionalTaskD 任务执行
CaseOptionalTaskD任务执行完成
2022-12-11 15:47:32.718  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask      :  <11781331511388032> [caseOptionalTaskD] execution
2022-12-11 15:47:32.718  INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.TaskLoader          : 【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

# 第三方日志框架集成

这里选择Tlog (opens new window) 日志框架, 使用方法这里就不做赘述了。感兴趣的小伙伴可以到官网查看

# 集成使用


/**
 * 启动类
 */
@SpringBootApplication
/**
 * 使用gobrs-async-test 模块创建的任务 为了方便不重复创建任务了
 */
@ComponentScan(value = {"com.gobrs.async"})
public class GobrsAsyncExampleApplication {

    /**
     * Tlog 日志打印框架 官网: https://tlog.yomahub.com/
     */
    static {
        AspectLogEnhance.enhance();
    }

    /**
     * The entry point of application.
     *
     * @param args the input arguments
     */
    public static void main(String[] args) {
        SpringApplication.run(GobrsAsyncExampleApplication.class, args);
    }
}

# 更多细节

集成方式请参考源码示例项目 gobrs-async-example (opens new window) 或者直接下载源码查看。 源码地址 (opens new window)

Last Updated: 12/11/2022, 4:38:43 PM
💐线程复用
🍜规则热更新

← 💐线程复用 🍜规则热更新→

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