-
Notifications
You must be signed in to change notification settings - Fork 0
/
feed.go
49 lines (41 loc) · 1.24 KB
/
feed.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
package rpc
import (
"context"
"time"
"github.com/alph00/tiktok-tiny/kitex_gen/feed"
"github.com/alph00/tiktok-tiny/kitex_gen/feed/feedservice"
"github.com/alph00/tiktok-tiny/pkg/consul"
"github.com/alph00/tiktok-tiny/pkg/viper"
"github.com/cloudwego/kitex/client"
"github.com/cloudwego/kitex/pkg/retry"
"github.com/cloudwego/kitex/pkg/rpcinfo"
)
var (
feedClient feedservice.Client
)
func init() {
resolverConfig := viper.Read("consul")
consuladdr := resolverConfig.GetString("host") + ":" + resolverConfig.GetString("port")
resolver, err := consul.NewConsulResolver(consuladdr)
if err != nil {
panic(err)
}
feedServiceConfig := viper.Read("service")
serviceName := feedServiceConfig.GetString("feed.name")
c, err := feedservice.NewClient(
serviceName,
client.WithMuxConnection(1),
client.WithRPCTimeout(30*time.Second),
client.WithConnectTimeout(30000*time.Millisecond),
client.WithFailureRetry(retry.NewFailurePolicy()),
client.WithResolver(resolver), // resolver
client.WithClientBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: serviceName}),
)
if err != nil {
panic(err)
}
feedClient = c
}
func Feed(ctx context.Context, req *feed.FeedRequest) (*feed.FeedResponse, error) {
return feedClient.Feed(ctx, req)
}