-
Notifications
You must be signed in to change notification settings - Fork 33
/
client.go
76 lines (60 loc) · 1.99 KB
/
client.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// @Author: Hexiaoming 2023/2/18
package rpc
import (
"github.com/infraboard/mcube/logger"
"github.com/infraboard/mcube/logger/zap"
"os"
"github.com/Go-To-Byte/DouSheng/dou_kit/client"
"github.com/Go-To-Byte/DouSheng/dou_kit/conf"
"github.com/Go-To-Byte/DouSheng/dou_kit/exception"
"github.com/Go-To-Byte/DouSheng/relation_service/apps/relation"
)
// 关系服务 rpc 的 SDK
var (
discoverName = "relation_service"
)
type RelationServiceClient struct {
relationService relation.ServiceClient
l logger.Logger
}
// 从配置文件读取注册中心配置
func NewRelationServiceClientFromCfg() (*RelationServiceClient, error) {
// 注册中心配置 [从配置文件中读取]
cfg := conf.C().Consul.Discovers[discoverName]
// 去发现 relation_service 服务
// 根据注册中心的配置,获取关系服务的客户端
clientSet, err := client.NewClientSet(cfg)
if err != nil {
return nil,
exception.WithStatusMsgf("获取服务[%s]失败:%s", cfg.DiscoverName, err.Error())
}
return newDefault(clientSet), nil
}
// 从环境变量读取注册中心配置
func NewRelationServiceClientFromEnv() (*RelationServiceClient, error) {
cfg := conf.NewDefaultDiscover()
cfg.SetAddr(os.Getenv("CONSUL_ADDR"))
cfg.SetDiscoverName(os.Getenv("CONSUL_DISCOVER_NAME"))
// 根据注册中心的配置,获取关系服务的客户端
clientSet, err := client.NewClientSet(cfg)
if err != nil {
return nil,
exception.WithStatusMsgf("获取服务[%s]失败:%s", discoverName, err.Error())
}
return newDefault(clientSet), nil
}
func newDefault(clientSet *client.ClientSet) *RelationServiceClient {
conn := clientSet.Conn()
return &RelationServiceClient{
l: zap.L().Named("Relation_Service_RPC"),
// Relation 服务
relationService: relation.NewServiceClient(conn),
}
}
func (c *RelationServiceClient) RelationService() relation.ServiceClient {
if c.relationService == nil {
c.l.Errorf("获取关系服务客户端[relation 服务]失败")
return nil
}
return c.relationService
}