克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

异常任务重试管理平台是一个中心化的,重试任务中心。让重试任务和定时任务的接入更加灵活方便。 ** img.png 项目结构 ** 项目结构。 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 项目启动类。

项目依赖关系 输入图片说明 img_1.png 底层使用netty server。使用http进行通信

项目架构: img_3.png 业务接入入说明: 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,如果需要可以根据世纪的情况做相关的修改,也可以做成可配置),任务再次注册会失败。时序图如下。 img_4.png

BSD 3-Clause License Copyright (c) 2022, 小强_加油 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

中心化重试任务管理中心(可以直接使用在项目中,使用的话给个赞) 展开 收起
Java 等 4 种语言
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化