diff --git a/CHANGELOG.md b/CHANGELOG.md index bf0f7328..41536710 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## v2022-06-07 - jobs:优化配置 +- jobs:增加自定义目录配置 ## v2022-05-31 diff --git a/gojobs/etcd.go b/gojobs/etcd.go index e4f45ee2..6edb7aa3 100644 --- a/gojobs/etcd.go +++ b/gojobs/etcd.go @@ -7,11 +7,12 @@ import ( // EtcdConfig etcd配置 type EtcdConfig struct { - Endpoints []string // 接口 []string{"http://127.0.0.1:2379"} - DialTimeout time.Duration // time.Second * 5 - LocalIP string // 本机IP - Username string // 用户名 - Password string // 密码 + Endpoints []string // 接口 []string{"http://127.0.0.1:2379"} + DialTimeout time.Duration // time.Second * 5 + LocalIP string // 本机IP + Username string // 用户名 + Password string // 密码 + CustomDirectory string // 自定义目录,后面不需要/ } // Etcd etcd @@ -35,12 +36,28 @@ const ( JobWorkerDir = "/cron/workers/" ) +func getJobSaveDir(e Etcd) string { + if e.CustomDirectory == "" { + return JobSaveDir + } else { + return JobSaveDir + e.CustomDirectory + "/" + } +} + +func getJobWorkerDir(e Etcd) string { + if e.CustomDirectory == "" { + return JobWorkerDir + } else { + return JobWorkerDir + e.CustomDirectory + "/" + } +} + // GetWatchKey 监听的key func (e Etcd) GetWatchKey() string { - return JobSaveDir + e.LocalIP + return getJobSaveDir(e) + e.LocalIP } // IssueWatchKey 下发的key func (e Etcd) IssueWatchKey(ip string) string { - return JobSaveDir + ip + return getJobSaveDir(e) + ip } diff --git a/gojobs/etcd_server.go b/gojobs/etcd_server.go index 4db7d0b0..b8d41bee 100644 --- a/gojobs/etcd_server.go +++ b/gojobs/etcd_server.go @@ -26,6 +26,8 @@ func NewEtcdServer(config *EtcdConfig) (*Etcd, error) { Endpoints: e.Endpoints, DialTimeout: e.DialTimeout, } + + // 判断有没有配置用户信息 if e.Username != "" { v3Config.Username = e.Username v3Config.Password = e.Password @@ -57,20 +59,20 @@ func (e Etcd) ListWorkers() (workerArr []string, err error) { workerArr = make([]string, 0) // 获取目录下所有Kv - if getResp, err = e.Kv.Get(context.TODO(), JobWorkerDir, clientv3.WithPrefix()); err != nil { + if getResp, err = e.Kv.Get(context.TODO(), getJobWorkerDir(e), clientv3.WithPrefix()); err != nil { return } // 解析每个节点的IP for _, kv = range getResp.Kvs { // kv.Key : /cron/workers/192.168.2.1 - workerIP = ExtractWorkerIP(string(kv.Key)) + workerIP = e.ExtractWorkerIP(string(kv.Key)) workerArr = append(workerArr, workerIP) } return } // ExtractWorkerIP 提取worker的IP -func ExtractWorkerIP(regKey string) string { - return strings.TrimPrefix(regKey, JobWorkerDir) +func (e Etcd) ExtractWorkerIP(regKey string) string { + return strings.TrimPrefix(regKey, getJobWorkerDir(e)) } diff --git a/gojobs/etcd_worker.go b/gojobs/etcd_worker.go index 9a619f4e..c79702ea 100644 --- a/gojobs/etcd_worker.go +++ b/gojobs/etcd_worker.go @@ -31,6 +31,8 @@ func NewEtcdWorker(config *EtcdConfig) (*Etcd, error) { Endpoints: e.Endpoints, DialTimeout: e.DialTimeout, } + + // 判断有没有配置用户信息 if e.Username != "" { v3Config.Username = e.Username v3Config.Password = e.Password @@ -67,7 +69,7 @@ func (e Etcd) RegisterWorker() { for { // 注册路径 - regKey = JobWorkerDir + e.LocalIP + regKey = getJobWorkerDir(e) + e.LocalIP log.Println("租约:", regKey) cancelFunc = nil