-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nacos Config配置监听比Spring的Environment要快,导致获取的配置还是旧的。 #3920
Comments
从机制上,nacos的配置是最终一致性,nacos多个监听器之间并没有依赖关系,nacos保证的是通过监听器receiveConfigInfo接收到的是最新的配置,但不保证其他的监听器(更新Spring Enviroment)已经接受到了最新的结果 |
这个机制是否有可能做些调整,毕竟nacos的配置最终还是要刷新到Spring Environment中? |
这个机制不好调整,现在你遇到的问题本质上是使用方式不对 |
请问我的正确姿势是什么?意思是直接用nacos监听到的配置,而不是直接使用Environment吗? |
我记得文档中刷新配置是基于 |
可以使用sca发布的新的nacos注解,https://mp.weixin.qq.com/s/VJrM53Z-gfq94pYVEACdiQ ,看看是不是你需要的功能。
|
用法实例: 保证在nacos创建的dataId="apaas.application.json", group="apaas" 的配置可以通过json反序列为你的ApaasApplicationProperties对象即可 |
你现在的这个用法用Spring的ConfigurationProperties 注解就行了。。。不需要那些监听回调的逻辑 |
感谢回复。这种确实可以拿到最新的配置,但是其实我想拿到配置改变的事件,以便于通知其他的业务处理。 或许使用 |
如果你需要接受变更事件,做额外的业务通知,可以使用 新发布的注解 |
Which Component
Describe the bug
由于业务场景需要监听nacos的配置改变,做了以下代码处理:
当配置修改后,通过Spring的Environment获取配置,发现这时候拿到的配置还是旧的,代码如下:
但如果我在监听代码中睡眠一定时间(如2秒),则能正常拿到最新的配置,睡眠代码如下:
![image](https://private-user-images.githubusercontent.com/68590897/394204320-b6ae57bd-0547-4e90-a0dd-786632a8ae2d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NzI3NDYsIm5iZiI6MTczOTQ3MjQ0NiwicGF0aCI6Ii82ODU5MDg5Ny8zOTQyMDQzMjAtYjZhZTU3YmQtMDU0Ny00ZTkwLWEwZGQtNzg2NjMyYThhZTJkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE4NDcyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM5MGFmZjhmNTY3NzI2NDMxZGQ0OGY2Yjg5NmZmNWVlZTkxODkwMjExMjYwZThhODA1NjRlZDI5YzRjMmE0NzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.xP3FmQEnnVK3KSa9ad-pS_UVmuzjdNC0K_V7j5kf_FE)
这是我通过日志观察到的效果:
![Snipaste_2024-12-10_17-06-10](https://private-user-images.githubusercontent.com/68590897/394205078-86372d66-cbb1-4ee7-925c-8649a4899033.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NzI3NDYsIm5iZiI6MTczOTQ3MjQ0NiwicGF0aCI6Ii82ODU5MDg5Ny8zOTQyMDUwNzgtODYzNzJkNjYtY2JiMS00ZWU3LTkyNWMtODY0OWE0ODk5MDMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE4NDcyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFmOTljODIxMDQ2ODc4NDY5NzUxODA3NGRjZWUyOGU2MjkwMTgzOTVjNzFiNDQzOWM3NmIzMTk2ZjY1NWRmNjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.qH8dxG5koiYiL8TEByF7cz8MeGJd9WcBct5vURZoKBg)
Expected behavior
在监听到nacos配置有变化时,通过Spring的Environment能拿到最新的配置。
The text was updated successfully, but these errors were encountered: