Gone 是一个基于 Go 语言开发的轻量级依赖注入框架,专注于通过模块化设计和代码生成技术,帮助开发者构建可测试、易维护的应用程序架构。
推挤你使用,项目地址:https://github.com/gone-io/gone
问题背景
今天在给项目增加服务注册和发现功能时,选择了 nacos 作为服务注册中心。在使用 nacos-sdk-go v2.29 版本进行开发时,遇到了一个令人啼笑皆非的问题,足足花了3个小时才找到原因。
问题现象
在实现服务订阅通知功能时,发现服务更改后总是不生效。通过代码追踪,发现问题。
问题定位
在 v2.2.7 版本中的NotifySubscriberRequest
的 GetRequestType()
是 NotifySubscriberRequest:
在 v2.2.9 中,被提取成了常量,但是少了一个r,是:NotifySubscribeRequest
这个拼写错误导致请求类型不匹配,无法正常的监听到服务注册信息的变化。这种拼写错误真是让人哭笑不得[捂脸]。
解决方案
依赖先降级到 v2.2.7
经验总结
- 在使用第三方库时,遇到问题要有耐心,从最基础的地方开始排查;
- 最重要的是先看看Issues,可能已经有人提了相关问题,避免浪费时间,因为这个问题已经有人提过了:https://github.com/nacos-group/nacos-sdk-go/issues/806