Dottask 使用指南

Dottask 使用指南

Dottask 是一个基于 Go 语言的简单易用的任务框架,支持循环(Loop)、定时(Cron)以及队列(Queue)三种任务模式。它允许通过配置文件(xml/json/yaml)或代码直接定义任务,并提供了丰富灵活的任务管理能力。

1. 项目目录结构及介绍

以下是 Dottask 开源项目的基本目录结构及其简介:

├── example           # 示例代码目录,含快速启动示例
│   ├── main.go       # 示例主程序入口
│   └── ...
├── config.go         # 包含任务处理上下文等配置相关逻辑的文件
├── constant.go       # 存放常量定义,如错误码等
├── context.go        # 任务上下文定义
├── counter.go        # 任务计数器相关实现
├── crontask.go       # 定时任务相关逻辑
├── express.go        # 表达式解析相关,用于Cron任务的时间表达式计算
├── express_test.go   # Cron表达式的测试文件
├── logger.go         # 日志处理逻辑
├── looptask.go       # 循环任务逻辑实现
├── queuetask.go      # 队列任务处理逻辑
├── taskinfo.go       # 任务信息结构体定义
├── tasks.go          # 任务集合操作相关函数
├── tasks_httphandler.go # 提供HTTP接口的Task处理器
├── LICENSE           # 许可证文件
├── README.md         # 项目说明文档
└── ...
  • example: 包括快速上手的代码示例。
  • config, constant, counter 等:核心功能模块,涉及配置、常量、计数器等功能实现。
  • *.go: 各功能模块对应的Go文件,如任务类型的具体实现。
  • LICENSE, README.md: 项目授权许可和使用说明文档。

2. 项目的启动文件介绍

通常,开发人员应从 example/main.go 文件入手来了解如何启动Dottask任务。以下是一个简化的快速开始示例,展示了如何创建并启动Cron和Loop任务:

package main

import (
    "fmt"
    "time"
    "github.com/devfeel/dottask"
)

// 任务处理函数示例
func Job_Test(ctx *dottask.TaskContext) error {
    fmt.Println(time.Now().String(), " => Job_Test")
    // 可以添加具体任务逻辑
    return nil
}

func Loop_Test(ctx *dottask.TaskContext) error {
    fmt.Println(time.Now().String(), " => Loop_Test")
    // 模拟延迟,实际应用中可以省略
    time.Sleep(time.Second * 3)
    return nil
}

func main() {
    // 初始化任务服务
    service := dottask.StartNewService()

    // 创建并注册任务
    if err := service.CreateCronTask("testcron", true, "48-5 */2 * * *", Job_Test, nil); err != nil {
        fmt.Println("service CreateCronTask error => ", err.Error())
    }
    if err := service.CreateLoopTask("testloop", true, 0, 1000, Loop_Test, nil); err != nil {
        fmt.Println("service CreateLoopTask error => ", err.Error())
    }

    // 启动所有任务
    service.StartAllTask()

    // 打印所有任务信息
    fmt.Println(service.PrintAllTasks())

    // 循环保持应用运行
    for {
        time.Sleep(time.Hour)
    }
}

3. 项目的配置文件介绍

Dottask支持通过配置文件定义任务,支持XML、JSON、YAML格式。下面是一个配置文件(task.xml)的例子:

<xml version="1.0" encoding="UTF-8">
<config>
    <global isrun="true" logpath="d:/"/>
    <tasks>
        <task taskid="Loop_Config" type="loop" isrun="true" duetime="10000" interval="10" handlername="Loop_Config"/>
        <task taskid="Job_Config" type="cron" isrun="true" express="0 */5 * * * *" handlername="Job_Config"/>
    </tasks>
</config>
  • 配置文件示例:
    • <global> 标签定义全局配置,如是否运行(isrun)和日志路径(logpath)。
    • <tasks> 包含具体的任务定义。
    • 每个 <task> 任务标签中,需指定任务ID(taskid)、类型(type:cron/loop/queue)、是否启用(isrun)、执行时间或间隔等属性,以及关联的处理器名称(handlername)。

在代码中加载配置文件,可以通过调用类似 service.LoadConfig("d:\\task\\conf") 的方法完成。

通过上述步骤和配置,开发者能够轻松地配置和运行复杂的定时任务、循环任务和队列任务,适应各种自动化工作流的需求。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值