老艿艿:本系列假定胖友已经阅读过 《Apollo 官方 wiki 文档》 。
- 客户端会发起一个Http 请求到 Config Service 的 notifications/v2 接口,也就是NotificationControllerV2 ,参见 RemoteConfigLongPollService 。
- NotificationControllerV2 不会立即返回结果,而是通过 Spring DeferredResult 把请求挂起。
- 如果在 60 秒内没有该客户端关心的配置发布,那么会返回 Http 状态码 304 给客户端。
- 如果有该客户端关心的配置发布,NotificationControllerV2 会调用 DeferredResult 的 setResult 方法,传入有配置变化的 namespace 信息,同时该请求会立即返回。客户端从返回的结果中获取到配置变化的 namespace 后,会立即请求 Config Service 获取该 namespace 的最新配置。
2. NotificationControllerV2友情提示:在目前 Apollo 的实现里,如下的名词是“等价”的:
- 通知编号 = ReleaseMessage.id
- Watch Key = ReleaseMessage.message
文章暂时未统一用词,所以胖友看的时候需要“脑补”下。
老艿艿:流程较长,代码较多,请耐心理解。
~(。≧3≦)ノ⌒☆
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |