在進(jìn)行調(diào)用時(shí),可以通過 ?callopt.WithURL
? 指定,通過該 option 指定的 URL,會(huì)經(jīng)過默認(rèn)的 DNS resolver 解析后拿到 host 和 port,此時(shí)其等效于 ?callopt.WithHostPort
?。
import "github.com/cloudwego/kitex/client/callopt"
...
url := callopt.WithURL("http://myserverdomain.com:8888")
resp, err := cli.Echo(context.Background(), req, url)
if err != nil {
log.Fatal(err)
}
此外也可以自定義 DNS resolver
resolver 定義如下 (pkg/http):
type Resolver interface {
Resolve(string) (string, error)
}
參數(shù)為 URL,返回值為訪問的 server 的 “host:port”。
通過 ?client.WithHTTPResolver
? 指定用于 DNS 解析的 resolver。
import "github.com/cloudwego/kitex/client/callopt"
...
dr := client.WithHTTPResolver(myResolver)
cli, err := echo.NewClient("echo", dr)
if err != nil {
log.Fatal(err)
}
更多建議: