目录

一、背景

二、示例

2.1安装

2.2绘制流程


一、背景

最近有需要用到异步任务编排,找了几个比较好用的框架:

京东零售:asyncTool

Gobrs-Async

两个都能满足开发中的需求,不过asyncTool需要在代码中写入大量WorkerWrapper,最后无意间翻到Gobrs-Async,相对于asyncTool来说,它可以全局拦截异常,编排流程比较容易,从节点的开始--执行--结束(中间出现异常)都有想对应的方法,具体其他的优势,可以看看官网放出的这张对比图:

二、示例

这里举个最简单的多个执行单元的串行请求:

2.1安装

以springboot项目为例,引入依赖

<dependency><groupId>io.github.memorydoc</groupId><artifactId>gobrs-async-starter</artifactId><version>1.2.1-RELEASE</version>
</dependency>

2.2绘制流程

在springboot项目中,有两种绘制方式,一种是直接在application.yml配置文件中配置,如下:

spring:gobrs:async:rules:# 支持多命名空间- name: "ruleName" # 规则名称 content: "aService->bService->cService"

创建执行单元

@Component
public class AService  extends AsyncTask<Object, Object> {@Overridepublic void prepare(Object o) {}@Overridepublic Object task(Object o, TaskSupport support) {//获取任务执行时传递的公共参数Map<String, Object> param = (Map<String, Object>) getParam(support);//在BService中获取上一单元的执行结果//String result = getResult(support, AService.class);return null;}@Overridepublic boolean nessary(Object o, TaskSupport support) {return true;}@Overridepublic void onSuccess(TaskSupport support) {}@Overridepublic void onFail(TaskSupport support) {}
}

使用任务触发器

@Autowired
private GobrsAsync gobrsAsync;

#启动任务流程,其中ruleName为application.yml中的规则名称

// 一行代码即可启动任务流程Map<String, Object> params  = new HashMap();
// 任务流程名称 , 任务流程传入参数, 任务流程超时时间
AsyncResult asyncResult = gobrsAsync.go("ruleName", () -> params, timeOut);

任务流程的params参数 有两种参数形式。

#参数类型一

如果任务流程中所有任务 都是用同一个参数进行传递传递(类似于DataContext 上下文), 则params 直接传入公用的同一个参数即可

User user = new User();
AsyncResult asyncResult = gobrsAsync.go("ruleName", () -> user, timeOut);

#参数类型二

如果任务流程中不同任务使用不同的参数。则参数需要传递Map类型, Map的key 为 任务bean 名称, 值为所需要传递的参数值。

User user = new User();
Fruit fruit = new Fruit();
Map<String,Object> params = new HashMap();
// 需要传递参数的 bean 类, 考虑开发者开发喜欢,直接key设计成class 类型
params.put(AService.class, user);
params.put(BService.class, fruit);AsyncResult asyncResult = gobrsAsync.go("ruleName", () -> params, timeOut);

高性能异步编排框架Gobrs-Async简单使用相关推荐

  1. 【Rust 日报】2022-10-23 tachyonix:一个高性能异步计算框架

    tachyonix:异步多生产单消费有界通道 这个库是 Asynchronix 的一个分支,它持续努力地构建用于系统仿真的高性能异步计算框架. 这是一个简洁的异步通道,以快速著称,但也不会在正确性和质 ...

  2. 【Java进阶营】Java异步NIO框架Netty实现高性能高并发

    1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用 ...

  3. Disruptor是一个高性能的异步处理框架

    为什么80%的码农都做不了架构师?>>>    Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件- ...

  4. python比flask更好的框架_(入门篇)Python框架之FastAPI——一个比Flask和Tornado更高性能的API 框架...

    用官方的话来说,FastAPI 是一种现代,快速(高性能)的 Web 框架,基于标准Python 类型提示使用 Python 3.6+ 构建 API FastAPI 站在巨人的肩膀上? 很大程度上来说 ...

  5. 谷粒商城高级篇(38)——异步编排之商品详情查询

    异步编排之商品详情查询 异步编排 CompletableFuture介绍 创建异步对象 计算完成时回调方法 handle 方法 线程串行化方法 两任务组合 全部完成 一个完成即可 多任务组合 业务描述 ...

  6. 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI

    Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...

  7. PHP高性能分布式应用服务器框架-SwooleDistributed

    选择SD框架助力企业开发 今年年底历时2年多的迭代,这是SD框架硕果满满的一年,通过不断的迭代和改进SD框架已经在圈内有良好的口碑,不少新生的框架借鉴了SD的设计思想,SD框架也被不少创业型公司和大型 ...

  8. 三分钟了解 Python3 的异步 Web 框架 FastAPI

    快速编码,功能完善.从启动到部署,实例详解异步 py3 框架选择 FastAPI 的原因. FastAPI 介绍 FastAPI 与其它 Python-Web 框架的区别 在 FastAPI 之前,P ...

  9. python分布式框架_高性能分布式执行框架——Ray

    Ray是UC Berkeley RISELab新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能. Ray目前还处于实验室 ...

最新文章

  1. 企业工作流程化重要吗?
  2. 在Java中使用分隔符(拆分的对立面)连接数组元素的快速简便方法
  3. python开发的软件sparrow-sparrow
  4. linux——系统排错之引导恢复shell
  5. 20165234 《Java程序设计》第六周学习总结
  6. java 唯一索引冲突_JPA merge联合唯一索引无效问题解决方案
  7. weblogic92 启动慢解决办法
  8. CSS3 background-clip属性
  9. 观察者模式(浅谈监听器工作原理)
  10. 华为S9303三层交换机一次配置经历和心得
  11. 系统计算机名是中文,导致VisualSVN安装失败
  12. Alex 的 Hadoop 菜鸟教程: 第15课 Impala 安装使用教程
  13. HDU 2586 How far away ? tarjan算法求LCA
  14. LSM6DS3 gyro数据设置
  15. rdmsr获取Intel CPU温度
  16. 布兰迪斯大学计算机美国大学排名,美国留学 近5年布兰迪斯大学排名情况
  17. 赛效:Xmind思维导图怎么用 新手使用教程分享
  18. 基于软路由连接上网的相关配置
  19. HTTP断点续传以及缓存问题
  20. ViTDet程序调用不了GPU全部内存,而且显示NVCC: not available

热门文章

  1. 解决如何整理出乡镇级的地图json,以此使用echarts绘制出乡镇级的地图数据(国家级、省级、市级的地图信息也可以获取)
  2. 游戏服务器开发(基本需求)
  3. VAIO侍14Ultra笔记本U盘重装Win10操作图文分享
  4. Java - Dom4J解析XML
  5. u盘/内存卡可用容量变小有未分配空间如何解决
  6. mysql分页用乘号出错_PHP分页碰到的问题
  7. 使用Fiddler Everywhere进行代理配置
  8. 加解密-keccak256
  9. 魅族pro6 android 6.0,魅族PRO6有几个版本?魅族PRO6各版本区别对比介绍
  10. 计算机管理 看内存个数,电脑不拆机怎么查看内存条插槽个数?