异常任务重试管理平台是一个中心化的,重试任务中心。让重试任务和定时任务的接入更加灵活方便。 ** 项目结构 ** 项目结构。 retry-task-admin 任务管理中心管理项目。 retry-task-service 任务重试中心服务项目。 retry-task-core 任务管理中心核心项目。其他项目如果要接入任务中心,需要集成当二方包 retry-task-service 任务重试中心服务项目。 retry-task-extension 扩展点,支持spring扩展点。 retry-task-datasource 多数据源。 retry-task-sequence id生成器。支持生产mysql主键。借鉴了tddl-sequence的id实现方式。 retry-task-start 项目启动类。
项目依赖关系 输入图片说明 底层使用netty server。使用http进行通信
项目架构: 业务接入入说明: 1:接入方需要引入retry-task-core二方包。 接入应用中的配置中需要添加如下配置。 `spring.retry.task.enable=true (缺省是为true,为false时,启动不会加载相关配置项) spring.retry.task.serverHost=http://127.0.0.1:9999 (server 服务域名,多个时可以使用逗号分隔) spring.retry.task.projectName=retry-task (接入项目名称) spring.retry.task.token=retry-task (接入项目对应的token) spring.retry.task.clientPort=9997 (接入项目port。)
#spring.retry.task.clientIp= http://retrytask.com (接入项目的ip地址。如果不配置该项,默认取当前的机器的ip地址) ` 管理页面需要将接入的项目注册到系统中。 输入图片说明
接入的代码:
创建重试任务
RetryTaskDTO retryTaskDTO = RetryTaskDTO. createBuilder(). projectName("retry-task").//接入项目名称 isTest(0).//环境标识 根据自己环境的不同进行设置 taskName("test").//执行任务的名称 taskDesc("ceshi").//任务描述 executeType(RetryTaskExecuteTypeEnum.INTERVAL.getType()).//任务类型,按照时间间隔或者cron表达式 intervalSecond(1000).//时间间隔 parameters("ceshi").//任务参数 token("retry-task").//任务的token和配置中的相同。 build(); Result<Long> result = RetryTaskFactory.getInstance().createRetryTask(retryTaskDTO);
项目接入:
提供两种实现方案
实现IRetryTaskListener接口。
`@RetryTaskAnnotation(projectName = "retry-task",taskName = "test1")
public class TestRetryTask1 implements IRetryTaskListener {
@Override
public ConsumeStatus consume(RetryTaskContext retryTaskContext) {
//创建任务是传入的参数
String params = retryTaskContext.getParameters();
return null;
}
}`
或者继承AbstractRetryTaskListener
`@RetryTaskAnnotation(projectName = "retry-task",taskName = "test") public class TestRetryTask extends AbstractRetryTaskListener {
@Override
public ConsumeStatus consume(RetryTaskContext retryTaskContext) {
return super.consume(retryTaskContext);
}
@Override
public void beforeConsume(RetryTaskContext context) {
super.beforeConsume(context);
}
@Override
public void afterConsume(ConsumeStatus consumeStatus, RetryTaskContext context) {
super.afterConsume(consumeStatus, context);
}
}` 当前项目可以直接应用到线上。如有使用,请联系作者本人,在线上使用的过程出现的问题。本人会逐渐进行优化。
循环重试:
什么是循环重试:重试任务中出现错误或者异常的时候,继续向重试中心添加重试任务。这样如果重试 任务一直无法成功。会不断的向重视任务添加任务。导致出现循环重试。解决这个问题,使用loopNum进行解决 在重试任务中添加重试任务,loopNum会不断的递增,当 loopNum>1000时(目前在代码中设置的是10000,如果需要可以根据世纪的情况做相关的修改,也可以做成可配置),任务再次注册会失败。时序图如下。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。