Files
lone-services/bff/internal/dialer/nacos.go
T
gjs be8f89f449
CI / changes (push) Successful in 5s
CI / docker-bff (push) Failing after 7s
CI / docker-product (push) Failing after 5s
CI / docker-admin (push) Failing after 4s
CI / docker-user (push) Failing after 6s
change layout
2026-08-20 15:41:44 +08:00

39 lines
1.1 KiB
Go

package dialer
import (
"context"
"fmt"
"lone-services/bff/internal/response"
"lone-services/pkg/discovery"
"net"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
// Nacos builds a zrpc client whose dials resolve via discovery.Pick.
func Nacos(conf zrpc.RpcClientConf) zrpc.Client {
serviceName := conf.Target
if serviceName == "" {
panic("gateway dialer: Grpc.Target (nacos serviceName) is required")
}
cliConf := conf
cliConf.Target = "passthrough:///nacos/" + serviceName
cliConf.Endpoints = nil
return zrpc.MustNewClient(cliConf,
zrpc.WithDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())),
zrpc.WithDialOption(grpc.WithUnaryInterceptor(response.UserClientInterceptor)),
zrpc.WithDialOption(grpc.WithContextDialer(func(ctx context.Context, _ string) (net.Conn, error) {
inst, err := discovery.Pick(serviceName)
if err != nil {
return nil, err
}
var d net.Dialer
return d.DialContext(ctx, "tcp", net.JoinHostPort(inst.IP, fmt.Sprintf("%d", inst.Port)))
})),
)
}