apache / apache/dubbo-go

nacos 配置中心加载配置启动 dubbo 报 error

Open
#2,151 11 comments 0 reactions 1 assignee Claimed by @1kasa View on GitHub
good first issue
Dominant language
Go
Stars
5k
Forks
1k
Avg merge
3d 6h
Merged PRs (30d)
29

Description

### 加载配置的代码
```
rootConfig := dubbo_config.NewRootConfigBuilder().
SetConfigCenter(dubbo_config.NewConfigCenterConfigBuilder().
SetProtocol("nacos").
SetAddress(ip). // 根据配置结构,设置配置中心
SetDataID(DataID). // 设置配置ID
SetGroup(Group).
Build()).
SetLogger(LoggerConfig).
Build()

if err := rootConfig.Init(); err != nil { // 框架启动
panic(err)
}
```
### 配置内容
```
dubbo:
registries:
my_nacos:
protocol: nacos
address: mse-31a78442-nacos-ans.mse.aliyuncs.com:8848
group: myGroup
params:
nacos.logDir: ./log
nacos.logLevel: error
metrics:
enable: true # default is true
path: /metrics
port: 9090 # default is 9090
namespace: public # default is dubbo 作为数据上报 metrics 的前缀
protocols:
triple:
name: tri
port: 20000
provider:
services:
Provider:
interface: dubbo.model # must be compatible with grpc or dubbo-java
shutdown:
internal-signal: true

```
### 报错信息
```
2022-12-08T17:26:32.867+0800 ERROR nacos_server/nacos_server.go:194 api,method:, params:<{"dataId":"dubbo.io.configurators","group":"dubbo"}>, call domain error:<[404] config data not exist
> , result:
2022-12-08T17:26:32.869+0800 ERROR nacos_server/nacos_server.go:194 api,method:, params:<{"dataId":"dubbo.io.configurators","group":"dubbo"}>, call domain error:<[404] config data not exist
> , result:
2022-12-08T17:26:32.870+0800 INFO config_client/config_proxy.go:180 [client.ListenConfig] request params:map[Listening-Configs:featuresdubbo9a050876b1eb3e07efaa73fd473e6885publictablesdubbo1604b55f395046d91e3ad6c9bcf833c8publicmodelsdubboe63c4f961630fabb73c6e22d61b9599fpublicrootdubbo5a7a2382126da03de55b3c9c32f0ef06public tenant:public] header:map[Content-Type:application/x-www-form-urlencoded;charset=utf-8 Long-Pulling-Timeout:30000 Long-Pulling-Timeout-No-Hangup:true accessKey: secretKey:]

2022-12-08T17:26:32.871+0800 ERROR nacos_server/nacos_server.go:194 api,method:, params:<{"dataId":"dubbo.io.configurators","group":"dubbo"}>, call domain error:<[404] config data not exist
> , result:
2022-12-08T17:26:32.871+0800 ERROR config_client/config_client.go:191 get config from server error:[404] config data not exist

2022-12-08T17:26:32.871+0800 WARN config_client/config_client.go:196 [client.GetConfig] config not found, dataId: dubbo.io.configurators, group: dubbo, namespaceId: .
2022-12-08T17:26:32.873+0800 INFO config_client/config_client.go:423 [client.ListenConfig] config changed:models%02dubbo%02public%01root%02dubbo%02public%01features%02dubbo%02public%01tables%02dubbo%02public%01

2022-12-08T17:26:32.874+0800 ERROR nacos_server/nacos_server.go:194 api,method:, params:<{"dataId":"dubbo.model.configurators","group":"dubbo"}>, call domain error:<[404] config data not exist
> , result:
2022-12-08T17:26:32.876+0800 ERROR nacos_server/nacos_server.go:194 api,method:, params:<{"dataId":"dubbo.model.configurators","group":"dubbo"}>, call domain error:<[404] config data not exist
> , result:
2022-12-08T17:26:32.878+0800 ERROR nacos_server/nacos_server.go:194 api,method:, params:<{"dataId":"dubbo.model.configurators","group":"dubbo"}>, call domain error:<[404] config data not exist
> , result:
2022-12-08T17:26:32.878+0800 ERROR config_client/config_client.go:191 get config from server error:[404] config data not exist

2022-12-08T17:26:32.878+0800 WARN config_client/config_client.go:196 [client.GetConfig] config not found, dataId: dubbo.model.configurators, group: dubbo, namespaceId: .
```

**服务并不需要这两个配置,为什么要去加载它们?**

自查定位到这行:
https://github.com/apache/dubbo-go/blob/7bba076bc260950998dc0b320b20e48bcda2f296/registry/directory/directory.go#L485

https://github.com/apache/dubbo-go/blob/7bba076bc260950998dc0b320b20e48bcda2f296/registry/directory/directory.go#L509

https://github.com/apache/dubbo-go/blob/7bba076bc260950998dc0b320b20e48bcda2f296/registry/base_configuration_listener.go#L59

为什么这里设置监听用的 key 是 `url.EncodedServiceKey()+constant.ConfiguratorSuffix` ?不能在配置里设置吗?我没建立叫这个名的配置。
为什么 `listener.InitWith`里默认用`constant.Dubbo` ? 不能在配置里设置吗? 我没这个group。
为什么这里一定要设置`listener`?我配置不会变动,不需要监听。

如果是我这样使用不对,请问建议的使用方式是怎样的?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.