使用Golang和GoFr框架实现定时任务

使用Golang和GoFr框架实现定时任务 :open_book: 查看我在Medium上的最新文章:《使用Go和GoFr入门Cron Jobs》。

揭开定时任务的神秘面纱,理解其重要性,并深入实践,利用GoFr强大的框架进行实现。

:handshake: 让我们点燃对话!在评论中分享您的想法、经验以及任何可能的问题。让我们在Golang开发的世界里互相赋能! :rocket::woman_technologist::man_technologist:

:globe_with_meridians: 探索GoFr,提升您的编码体验!

:link: 从这里阅读文章:Introduction to Cron Jobs with Go and GoFr | by Mundhraumang | Dec, 2023 | Medium


更多关于使用Golang和GoFr框架实现定时任务的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于使用Golang和GoFr框架实现定时任务的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在GoFr框架中实现定时任务非常直接,得益于其内置的Cron支持。以下是一个基础示例,展示如何使用GoFr设置定时任务:

package main

import (
    "gofr.dev/pkg/gofr"
)

func main() {
    app := gofr.New()

    // 添加一个每5分钟执行一次的定时任务
    app.NewCron("* */5 * * *", func() {
        app.Logger().Info("定时任务执行:每5分钟运行一次")
        // 在这里添加你的业务逻辑
    })

    // 添加一个每天凌晨2点执行的定时任务
    app.NewCron("0 2 * * *", func() {
        app.Logger().Info("定时任务执行:每天凌晨2点运行")
        // 在这里添加你的业务逻辑
    })

    app.Run()
}

对于更复杂的场景,比如需要依赖注入或访问应用服务的定时任务,可以使用NewCronWithJob方法:

package main

import (
    "context"
    "gofr.dev/pkg/gofr"
)

type MyJob struct {
    service *MyService
}

func (j *MyJob) Run(ctx *gofr.Context) {
    ctx.Logger().Info("执行带依赖注入的定时任务")
    // 通过j.service访问服务层
    result := j.service.ProcessData()
    ctx.Logger().Infof("处理结果: %v", result)
}

type MyService struct{}

func (s *MyService) ProcessData() string {
    return "数据处理完成"
}

func main() {
    app := gofr.New()
    
    // 初始化服务
    myService := &MyService{}
    
    // 创建定时任务实例
    myJob := &MyJob{service: myService}
    
    // 注册每10分钟执行一次的定时任务
    app.NewCronWithJob("*/10 * * * *", myJob)

    app.Run()
}

GoFr的Cron表达式遵循标准格式(分 时 日 月 周),框架会自动管理任务的执行生命周期。定时任务会在独立的goroutine中运行,不会阻塞主应用。

回到顶部