| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package micro
- import (
- "context"
- "github.com/gogf/gf/v2/container/gvar"
- "github.com/gogf/gf/v2/frame/g"
- consul "github.com/rpcxio/rpcx-consul/client"
- "github.com/smallnest/rpcx/client"
- "strings"
- )
- // InitMicroSrvClient 获取微服务客户端,arg为可选参数,若有必须是两个,分别是:reg string, serverAddr string
- func InitMicroSrvClient(ctx context.Context, serviceName, key string, args ...string) (c client.XClient) {
- reg, _ := g.Config().Get(ctx, "service_registry.registry")
- etcdAddr, _ := g.Config().Get(ctx, "service_registry.server-addr")
- if len(args) == 2 {
- reg = gvar.New(args[0])
- etcdAddr = gvar.New(args[1])
- }
- config, _ := g.Config().Get(ctx, key)
- arr := strings.Split(config.String(), ",")
- srvName := arr[0]
- if len(arr) == 2 { // 点对点 直连
- d, _ := client.NewPeer2PeerDiscovery("tcp@"+arr[1], "")
- c = client.NewXClient(serviceName, client.Failtry, client.RandomSelect, d, client.DefaultOption)
- return c
- } else {
- if reg.String() == "consul" { // 服务发现使用consul
- //d, _ := etcd_client.NewEtcdV3Discovery(srvName, serviceName, []string{etcdAddr}, nil)
- d, _ := consul.NewConsulDiscovery(srvName, serviceName, []string{etcdAddr.String()}, nil)
- //d, _ := client.NewConsulDiscovery(srvName, serviceName, []string{etcdAddr}, nil)
- c = client.NewXClient(serviceName, client.Failover, client.RoundRobin, d, client.DefaultOption)
- return c
- }
- }
- return nil
- }
|