-
Notifications
You must be signed in to change notification settings - Fork 0
/
registry.go
60 lines (49 loc) · 1.22 KB
/
registry.go
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package registry
import (
"errors"
"github.com/go-kratos/kratos/contrib/registry/etcd/v2"
"github.com/go-kratos/kratos/v2/registry"
clientv3 "go.etcd.io/etcd/client/v3"
)
// RegistryConf ... 默认的服务发现和注册中心配置项
type RegistryConf interface {
GetEndpoints() []string
GetEnabled() bool
}
var ErrEndpointNotExist = errors.New("ERR_ENDPOINT_NOT_EXIST")
// NewEtcdClient .... init etcd client/v3
func NewEtcdClient(conf RegistryConf) (*clientv3.Client, func(), error) {
if !conf.GetEnabled() {
return nil, func() {}, nil
}
// check endpoints
if conf.GetEndpoints() == nil || len(conf.GetEndpoints()) <= 0 {
return nil, func() {}, ErrEndpointNotExist
}
cli, err := clientv3.New(clientv3.Config{
Endpoints: conf.GetEndpoints(),
})
cleanup := func() {
if cli != nil {
_ = cli.Close()
}
}
if err != nil {
return nil, cleanup, err
}
return cli, cleanup, err
}
// NewRegistrar ... init ectd Registry
func NewRegistrar(client *clientv3.Client) registry.Registrar {
if client == nil {
return nil
}
return etcd.New(client)
}
// NewDiscovery ... init etcd Discovery
func NewDiscovery(client *clientv3.Client) registry.Discovery {
if client == nil {
return nil
}
return etcd.New(client)
}