From 622f6be827400b89a2e828aa6fe81d0e3ecc4d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Fri, 12 Aug 2022 13:22:24 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- const.go | 2 +- jobs_gorm_redis_get.go | 36 ++++++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/const.go b/const.go index 57c036d..a34316e 100644 --- a/const.go +++ b/const.go @@ -1,3 +1,3 @@ package gojobs -const Version = "1.0.50" +const Version = "1.0.51" diff --git a/jobs_gorm_redis_get.go b/jobs_gorm_redis_get.go index b3ab14f..4c5042d 100644 --- a/jobs_gorm_redis_get.go +++ b/jobs_gorm_redis_get.go @@ -5,13 +5,19 @@ import ( "errors" "fmt" "go.dtapp.net/gojobs/jobs_gorm_model" + "go.dtapp.net/gostring" "log" "math/rand" "time" ) // GetIssueAddress 获取下发地址 -func (j *JobsGorm) GetIssueAddress(ctx context.Context, v *jobs_gorm_model.Task) (address string, err error) { +// workers 在线列表 +// v 任务信息 +// --- +// address 下发地址 +// err 错误信息 +func (j *JobsGorm) GetIssueAddress(workers []string, v *jobs_gorm_model.Task) (address string, err error) { var ( currentIp = "" // 当前Ip appointIpStatus = false // 指定Ip状态 @@ -23,34 +29,34 @@ func (j *JobsGorm) GetIssueAddress(ctx context.Context, v *jobs_gorm_model.Task) appointIpStatus = true } - workers, err := j.GetSubscribeClientList(ctx) - if err != nil { - return address, errors.New(fmt.Sprintf("获取在线客户端列表失败:%s", err.Error())) - } - if len(workers) <= 0 { - return address, errors.New("没有客户端在线") - } + //workers, err := j.GetSubscribeClientList(ctx) + //if err != nil { + // return address, errors.New(fmt.Sprintf("获取在线客户端列表失败:%s", err.Error())) + //} + //if len(workers) <= 0 { + // return address, errors.New("没有客户端在线") + //} // 只有一个客户端在线 if len(workers) == 1 { if appointIpStatus == true { // 判断是否指定某ip执行 - if currentIp == workers[0] { + if gostring.Contains(currentIp, workers[0]) == true { return j.config.cornPrefix + "_" + v.SpecifyIp, nil } - return address, errors.New("执行的客户端不在线") + return address, errors.New(fmt.Sprintf("需要执行的[%s]客户端不在线", currentIp)) } return j.config.cornPrefix + "_" + workers[0], nil } // 优先处理指定某ip执行 if appointIpStatus == true { - for _, wv := range workers { - if currentIp == wv { - return j.config.cornPrefix + "_" + wv, nil + for wk, wv := range workers { + if gostring.Contains(currentIp, wv) == true { + return j.config.cornPrefix + "_" + workers[wk], nil } } - return address, errors.New("执行的客户端不在线") + return address, errors.New(fmt.Sprintf("需要执行的[%s]客户端不在线", currentIp)) } else { // 随机返回一个 zxIp := workers[j.random(0, len(workers))] @@ -87,6 +93,8 @@ func (j *JobsGorm) GetSubscribeClientList(ctx context.Context) ([]string, error) } // 随机返回一个 +// min最小 +// max最大 func (j *JobsGorm) random(min, max int) int { if max-min <= 0 { return 0