本地电脑开发,feign调用k8s中的服务会调用不到,查看注册中心nacos上服务的注册地址,本机的服务和k8s的服务不在一个网段。
要想调用到,有两种方法:
1.本机把另外的服务也启动起来,其中包含了rpc调用链路上的所有服务,不推荐
2.在@FeignClient注解中进行配置,url填写为k8s的地址,端口为被调用服务的nodeport。有个不方便的地方是需要改代码,commit代码或者检查代码时很碍眼。
针对不方便的地方提出优化,可在配置文件中进行配置,url=“${feign.xxx.url}”,有弊端为必须配置,否则会报错。
最终解决方案为:在@FeignClient的url属性写为url=“${feign.xxx.url:}“或者url=”${feign.xxx.url:#{null}}”,本地开发的配置中配
feign:
xxx:
url:
表示如果拿到配置就用配置中的,没有配置过就是默认地址。默认地址为服务名,具体要进一步查看feign的bean注入和实例化,实例化中getObject方法将url进行了重新设置。