Golang SDK接入

更新时间:

本文介绍如何将Golang应用通过SDK快速接入SchedulerX。

控制台配置

  1. 请参见创建应用,创建一个普通应用,并参见步骤2,生成配置信息。

    endpoint=xxxx
    namespace=xxxx
    groupId=xxx
    appKey=xxx
  2. 请参见任务管理,创建一个Golang类型任务。

    image.png

客户端接入

  1. 执行以下命令,拉取Go版本SDK。

    go get github.com/alibaba/schedulerx-worker-go@{最新的tag}
  2. 编写业务代码,实现Processor接口。

    type Processor interface {
        Process(ctx *processor.JobContext) (*ProcessResult, error)
    }

    示例:

    package main
    
    import (
    	"fmt"
    	"github.com/alibaba/schedulerx-worker-go/processor"
    	"github.com/alibaba/schedulerx-worker-go/processor/jobcontext"
    	"time"
    )
    
    var _ processor.Processor = &HelloWorld{}
    
    type HelloWorld struct{}
    
    func (h *HelloWorld) Process(ctx *jobcontext.JobContext) (*processor.ProcessResult, error) {
    	fmt.Println("[Process] Start process my task: Hello world!")
    	// mock execute task
    	time.Sleep(3 * time.Second)
    	ret := new(processor.ProcessResult)
    	ret.SetStatus(processor.InstanceStatusSucceed)
    	fmt.Println("[Process] End process my task: Hello world!")
    	return ret, nil
    }
    
  3. 注册Client和Job,任务名称与控制台保持一致。

    package main
    
    import (
    	"github.com/alibaba/schedulerx-worker-go"
    )
    
    func main() {
    	// This is just an example, the real configuration needs to be obtained from the platform
    	cfg := &schedulerx.Config{
    		Endpoint:  "acm.aliyun.com",
    		Namespace: "433d8b23-xxx-xxx-xxx-90d4d1b9a4af",
    		GroupId:   "xueren_sub",
    		AppKey:    "xxxxxx",
    	}
    	client, err := schedulerx.GetClient(cfg)
    	if err != nil {
    		panic(err)
    	}
    	task := &HelloWorld{}
    
    	// 给你的任务取一个名字,并注册到client中,要和控制台保持一致
    	client.RegisterTask("HelloWorld", task)
    	select {}
    }
    

结果验证

  1. 客户端接入完成,将该应用发布到阿里云。

  2. 登录分布式任务调度平台
  3. 在顶部菜单栏选择地域。
  4. 在左侧导航栏,单击应用管理

  5. 应用管理页面查看实例总数

    • 如果实例总数为0,则说明应用接入失败。请检查、修改本地应用。

    • 如果实例总数不为0,显示接入的实例个数,则说明应用接入成功。在操作列单击查看实例,即可在连接实例对话框中查看实例列表。

后续步骤

应用接入SchedulerX完成后,即可在分布式任务调度平台创建调度任务。更多信息,请参见创建调度任务

相关文档

Golang