# ATPS **Repository Path**: tbc521/ATPS ## Basic Information - **Project Name**: ATPS - **Description**: 异步任务处理系统:对于异步rest任务,消息生产者将rest请求打包成规定格式(JSON)发布到MQ,本系统从MQ获取任务,解析任务并发起rest请求,并将请求结果缓存到缓存系统,生产者可能这过消息中的requestId到约定的缓存服务中获取结果;将来会增加主动回调功能; - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2016-12-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Async Task Process System - 异步任务处理系统 * 简介 依托消息队列,做为消费者,用于执行简单的异步任务,从队列中获取任务(面向服务,所有任务都是一个http请求),然后执行,并将请求结果缓存到缓存系统中; 默认使用redis做为消息队列,并使用redis进行缓存; * 结构 * 任务: * 核心概念,系统围绕任务结构设计 * 所有任务皆为对REST服务的调用 * URL、请求方法、参数、参数组装形式、任务ID(用于缓存任务结果后,任务发起者获取)、任务开始处理时间、任务处理完成时间、缓存完成时间 * 监听器:用于监听消息队列,获取到消息,然后交给处理器处理; * 处理器:对任务进行处理,有多种处理器,顶级接口Handler,核心实现有三个,核心实现严格保证执行顺序: * 校验处理器:校验消息格式,是否包含执行任务必须的url、方法等信息; * 请求处理器:用于执行http请求; * 结果缓存器:用于将请求结果缓存到缓存系统中,等待任务发起者通过requestId获取结果; * 扩展处理器:可随意扩展处理器,只需实现Handler接口,即可被系统调用,处理器之间可通过HandlerContext传递信息;注:控制好执行顺序; * 未完成 *** * 使用方式: * 打成jar包,通过`java -jar xxx.jar`命令执行,相关配置有两种方式: * 在启动时加入启动参数(建议通过启动脚本,在脚本中编码配置信息) * 在jar包同级目录下创建config.properties配置文件,进行必要的配置 * 不打jar包,直接运行class,此时可直接配置class-path下的config.properties文件; * 打成jar包,在自己的工程(普通工程或者web工程)中引用,可重写监听器、扩展Handler,编写启动或配置类等; * 使用要求: * 具有可用的消息队列和缓存服务; * 任务生产者需按规定格式发布消息; * 消息示例:`{"httpMethod":"get","param":null,"paramType":"path_param","requestId":"99eac038-8bdd-408f-b144-a9db8cd0468e","timestamp":1480771640742,"url":"http://it:8080/demo2"}` ***