使用配置 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://#: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 驗證配置 API

分別啟動伺服器和客戶端,檢視呼叫資訊。

INFO cmd/client.go:62 client response result: name:"Hello laurence" id:"12345" age:21

最後修改日期:2023 年 1 月 2 日:增強 Dubbogo 文件 (#1800) (71c8e722740)