generated from CyanAsterisk/.github
/
chat_service.go
67 lines (62 loc) · 2.25 KB
/
chat_service.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
package initialize
import (
"github.com/CyanAsterisk/TikGok/server/cmd/user/config"
"github.com/CyanAsterisk/TikGok/server/shared/consts"
"github.com/CyanAsterisk/TikGok/server/shared/kitex_gen/chat/chatservice"
"github.com/cloudwego/kitex/client"
"github.com/cloudwego/kitex/pkg/klog"
"github.com/cloudwego/kitex/pkg/loadbalance"
"github.com/cloudwego/kitex/pkg/rpcinfo"
"github.com/kitex-contrib/obs-opentelemetry/provider"
"github.com/kitex-contrib/obs-opentelemetry/tracing"
nacos "github.com/kitex-contrib/registry-nacos/resolver"
"github.com/nacos-group/nacos-sdk-go/clients"
"github.com/nacos-group/nacos-sdk-go/common/constant"
"github.com/nacos-group/nacos-sdk-go/vo"
)
// InitChat init chat service.
func InitChat() chatservice.Client {
// init resolver
// Read configuration information from nacos
sc := []constant.ServerConfig{
{
IpAddr: config.GlobalNacosConfig.Host,
Port: config.GlobalNacosConfig.Port,
},
}
cc := constant.ClientConfig{
NamespaceId: config.GlobalNacosConfig.Namespace,
TimeoutMs: 5000,
NotLoadCacheAtStart: true,
LogDir: consts.NacosLogDir,
CacheDir: consts.NacosCacheDir,
LogLevel: consts.NacosLogLevel,
}
nacosCli, err := clients.NewNamingClient(
vo.NacosClientParam{
ClientConfig: &cc,
ServerConfigs: sc,
})
r := nacos.NewNacosResolver(nacosCli, nacos.WithGroup(consts.ChatGroup))
if err != nil {
klog.Fatalf("new nacos client failed: %s", err.Error())
}
provider.NewOpenTelemetryProvider(
provider.WithServiceName(config.GlobalServerConfig.Name),
provider.WithExportEndpoint(config.GlobalServerConfig.OtelInfo.EndPoint),
provider.WithInsecure(),
)
// create a new client
c, err := chatservice.NewClient(
config.GlobalServerConfig.ChatSrvInfo.Name,
client.WithResolver(r), // service discovery
client.WithLoadBalancer(loadbalance.NewWeightedBalancer()), // load balance
client.WithMuxConnection(1), // multiplexing
client.WithSuite(tracing.NewClientSuite()),
client.WithClientBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: config.GlobalServerConfig.ChatSrvInfo.Name}),
)
if err != nil {
klog.Fatalf("ERROR: cannot init client: %v\n", err)
}
return c
}