iris和xxl-job整合

在以前的文章中go任务调器gocron和xxl-job 尝试xxl和gin的整合,由于项目统一用iris 所以需要研究出如何与iris整合, 直接上代码:

复制代码
package main
 
import (
    "context"
    "fmt"
 
    "log"
 
    "github.com/kataras/iris/v12"
    "github.com/xxl-job/xxl-job-executor-go"
)
 
func main() {
    exec := xxl.NewExecutor(
        xxl.ServerAddr("http://192.168.100.30:9080/xxl-job-admin"),
        xxl.AccessToken(""),             //请求令牌(默认为空)
        xxl.ExecutorIp("192.168.100.2"), //可自动获取
        xxl.ExecutorPort("9999"),        //默认9999(非必填)
        xxl.RegistryKey("golang-jobs"),  //执行器名称
        xxl.SetLogger(&logger{}),        //自定义日志
    )
    exec.Init()
 
    //设置日志查看handler
    exec.LogHandler(func(req *xxl.LogReq) *xxl.LogRes {
        return &xxl.LogRes{Code: 200, Msg: "", Content: xxl.LogResContent{
            FromLineNum: req.FromLineNum,
            ToLineNum:   2,
            LogContent:  "这个是自定义日志handler",
            IsEnd:       true,
        }}
    })
 
    //添加到iris路由
 
    app := iris.New()
 
    app.Post("run", func(ctx iris.Context) {
        exec.RunTask(ctx.ResponseWriter(), ctx.Request())
    })
    app.Post("kill", func(ctx iris.Context) {
        exec.KillTask(ctx.ResponseWriter(), ctx.Request())
    })
    app.Post("log", func(ctx iris.Context) {
        exec.TaskLog(ctx.ResponseWriter(), ctx.Request())
    })
 
    //注册iris的handler
    app.Get("/", func(ctx iris.Context) {
        ctx.WriteString("pong")
    })
 
    //注册任务handler
    exec.RegTask("golang.test", Task_Test)
    log.Fatal(app.Run(iris.Addr(":9999")))
}
 
//xxl.Logger接口实现
type logger struct{}
 
func (l *logger) Info(format string, a ...interface{}) {
    fmt.Println(fmt.Sprintf("自定义日志 - "+format, a...))
}
 
func (l *logger) Error(format string, a ...interface{}) {
    log.Println(fmt.Sprintf("自定义日志 - "+format, a...))
}
 
func Task_Test(cxt context.Context, param *xxl.RunReq) (msg string) {
    fmt.Println("test one task  " + param.ExecutorHandler + " param:" + param.ExecutorParams + " log_id:" + xxl.Int64ToStr(param.LogID))
    fmt.Println(cxt)
    return "iris test done"
}
复制代码

本地运行结果:

k8s运行:

Dockerfile

复制代码
FROM golang:1.15.6
 
RUN mkdir -p /app
 
WORKDIR /app
 
ADD main /app/main
 
EXPOSE 30903
 
CMD ["./main"]
复制代码

build.sh

复制代码
#!/bin/bash
#cd $WORKSPACE
 
export GOPROXY=https://goproxy.io
 
 #根据 go.mod 文件来处理依赖关系。
go mod tidy
 
# linux环境编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main
 
# 构建docker镜像,项目中需要在当前目录下有dockerfile,否则构建失败
docker build -t xlliris .
docker tag  xlliris 192.168.100.30:8080/go/xlliris:2021
 
docker login -u admin -p '123456' 192.168.100.30:8080
docker push 192.168.100.30:8080/go/xlliris
 
docker rmi  xlliris
docker rmi 192.168.100.30:8080/go/xlliris:2021
复制代码

deploy.yaml

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: xlliris
  namespace: go
  labels:
    app: xlliris
    version: v1
spec:
  replicas: 1
  minReadySeconds: 10 
  selector:
    matchLabels:
      app: xlliris
      version: v1
  template:
    metadata:
      labels:
        app: xlliris
        version: v1
    spec:
      imagePullSecrets:
      - name: regsecret
      containers:
      - name: xlliris
        image: 192.168.100.30:8080/go/xlliris:2021
        ports:
        - containerPort: 30903
        imagePullPolicy: Always
 
---
 
apiVersion: v1 
kind: Service 
metadata:
  name: xlliris
  namespace: go 
  labels:
    app: xlliris
    version: v1
spec:
  type: NodePort
  ports:
    - port: 30903 
      targetPort: 30903 
      nodePort: 30903
      protocol: TCP
  selector:
    app: xlliris
复制代码

运行结果:

posted on   dz45693  阅读(2068)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2019-04-20 WSL(Windows Subsystem for Linux)的安装与使用及 mongodb安装
2019-04-20 开启win10下Ubuntu子系统的SSH服务 并设置为开机启动
2016-04-20 Asp.net WebAPI Ioc

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示