使用配置 API 启动应用
1. 准备工作
- dubbo-go cli 工具和依赖工具已安装
- 创建一个新的 demo 应用
2. 使用配置 API 启动应用
用户无需使用配置文件,可直接在代码中以 API 的调用的形式写入配置
2.1 修改服务端代码:
func main() {
config.SetProviderService(&GreeterProvider{})
protocolConfig := config.NewProtocolConfigBuilder().
SetPort("20000").
SetName("tri").
Build()
serviceConfig := config.NewServiceConfigBuilder().
SetInterface(""). // read interface from pb
Build()
providerConfig := config.NewProviderConfigBuilder().
AddService("GreeterProvider", serviceConfig).
Build()
rootConfig := config.NewRootConfigBuilder().
AddProtocol("triple-protocol-id", protocolConfig). // add protocol, key is custom
SetProvider(providerConfig).Build()
if err := config.Load(config.WithRootConfig(rootConfig)); err != nil {
panic(err)
}
select {}
}
配置 API 看上去写法较为复杂,但单个配置结构的构造过程都是一致的,参考 Java Builder 的设计,我们在配置 API 模块选用 New().SetA().SetB().Build()
的方式来逐层构造单个配置结构。
完成后,可删除掉go-server/conf 文件夹。
2.2 修改客户端代码:
go-client/cmd/client.go
func main() {
config.SetConsumerService(grpcGreeterImpl)
referenceConfig := config.NewReferenceConfigBuilder().
SetProtocol("tri").
SetURL("tri://localhost:20000").
SetInterface(""). // read interface name from pb
Build()
consumerConfig := config.NewConsumerConfigBuilder().
AddReference("GreeterClientImpl", referenceConfig).
Build()
rootConfig := config.NewRootConfigBuilder().
SetConsumer(consumerConfig).Build()
if err := config.Load(config.WithRootConfig(rootConfig)); err != nil {
panic(err)
}
logger.Info("start to test dubbo")
req := &api.HelloRequest{
Name: "laurence",
}
reply, err := grpcGreeterImpl.SayHello(context.Background(), req)
if err != nil {
logger.Error(err)
}
logger.Infof("client response result: %v\n", reply)
}
完成后,可删除掉go-client/conf 文件夹。
2.3 验证 Config API
分别启动 server 和 client ,查看调用信息。
INFO cmd/client.go:62 client response result: name:"Hello laurence" id:"12345" age:21
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 January 2, 2023: docs:quickstart_triple_with_customize (#1790) (2d2ea68)