From 7ad0f885be64ba121f6649e135b9a4ec45935922 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 10:37:59 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=9A=84=E5=AE=A2=E6=88=B7=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- const.go | 2 +- jobs_gorm.go | 11 +++++++++++ jobs_gorm_redis_get.go | 35 +++++++++++++---------------------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/const.go b/const.go index 86808cf..1cdad88 100644 --- a/const.go +++ b/const.go @@ -1,3 +1,3 @@ package gojobs -const Version = "1.0.44" +const Version = "1.0.45" diff --git a/jobs_gorm.go b/jobs_gorm.go index 6f33ae9..40d1ebe 100644 --- a/jobs_gorm.go +++ b/jobs_gorm.go @@ -77,6 +77,7 @@ func NewJobsGorm(config *JobsGormConfig) (*JobsGorm, error) { c.config.cornPrefix = config.CornPrefix c.config.debug = config.Debug + // 锁 c.lockClient = golock.NewLockRedis(c.redisClient) // 配置信息 @@ -103,5 +104,15 @@ func NewJobsGorm(config *JobsGormConfig) (*JobsGorm, error) { c.config.cornKeyChannel = c.getCornKeyChannel() c.config.cornKeyChannels = c.getCornKeyChannels() + if c.config.cornKeyIp == "" { + return nil, errors.New(fmt.Sprintf("没有配置 cornKeyIp:%s", c.config.cornKeyIp)) + } + if c.config.cornKeyChannel == "" { + return nil, errors.New(fmt.Sprintf("没有配置 cornKeyChannel:%s", c.config.cornKeyChannel)) + } + if c.config.cornKeyChannels == "" { + return nil, errors.New(fmt.Sprintf("没有配置 cornKeyChannels:%s", c.config.cornKeyChannels)) + } + return c, nil } diff --git a/jobs_gorm_redis_get.go b/jobs_gorm_redis_get.go index d7fed62..41360c4 100644 --- a/jobs_gorm_redis_get.go +++ b/jobs_gorm_redis_get.go @@ -9,11 +9,6 @@ import ( "time" ) -type GetSubscribeClientListResult struct { - err error - Client []string -} - // GetIssueAddress 获取下发地址 func (j *JobsGorm) GetIssueAddress(ctx context.Context, v *jobs_gorm_model.Task) (address string, err error) { var ( @@ -27,29 +22,29 @@ func (j *JobsGorm) GetIssueAddress(ctx context.Context, v *jobs_gorm_model.Task) appointIpStatus = true } - workers := j.GetSubscribeClientList(ctx) - if workers.err != nil { + workers, err := j.GetSubscribeClientList(ctx) + if err != nil { return address, errors.New(fmt.Sprintf("获取在线客户端列表失败:%s", err.Error())) } - if len(workers.Client) <= 0 { + if len(workers) <= 0 { return address, errors.New("没有客户端在线") } // 只有一个客户端在线 - if len(workers.Client) == 1 { + if len(workers) == 1 { if appointIpStatus == true { // 判断是否指定某ip执行 - if currentIp == workers.Client[0] { + if currentIp == workers[0] { return j.config.cornPrefix + "_" + v.SpecifyIp, nil } return address, errors.New("执行的客户端不在线") } - return j.config.cornPrefix + "_" + workers.Client[0], nil + return j.config.cornPrefix + "_" + workers[0], nil } // 优先处理指定某ip执行 if appointIpStatus == true { - for _, wv := range workers.Client { + for _, wv := range workers { if currentIp == wv { return j.config.cornPrefix + "_" + wv, nil } @@ -57,7 +52,7 @@ func (j *JobsGorm) GetIssueAddress(ctx context.Context, v *jobs_gorm_model.Task) return address, errors.New("执行的客户端不在线") } else { // 随机返回一个 - zxIp := workers.Client[j.random(0, len(workers.Client))] + zxIp := workers[j.random(0, len(workers))] if zxIp == "" { return address, errors.New("获取执行的客户端异常") } @@ -67,22 +62,18 @@ func (j *JobsGorm) GetIssueAddress(ctx context.Context, v *jobs_gorm_model.Task) } // GetSubscribeClientList 获取在线的客户端 -func (j *JobsGorm) GetSubscribeClientList(ctx context.Context) GetSubscribeClientListResult { +func (j *JobsGorm) GetSubscribeClientList(ctx context.Context) ([]string, error) { values, err := j.redisClient.Keys(ctx, j.config.cornPrefix+"_*").Result() if err != nil { - return GetSubscribeClientListResult{ - err: err, - } + return nil, errors.New(fmt.Sprintf("获取失败:%s", err.Error())) } - list := make([]string, 0, len(values)) + client := make([]string, 0, len(values)) for _, val := range values { - list = append(list, val.(string)) + client = append(client, val.(string)) } - return GetSubscribeClientListResult{ - Client: list, - } + return client, nil } // 随机返回一个