解决RestTemplate的No instances available for localhost错误
问题:
在通过RestTemplate进行调用其他项目的API时,由于是在本地调本地,产生了No instances available for localhost错误,导致无法调用。
原因:
既然是负载均衡,那必然是多台服务器的负载均衡,用IP访问就没有意义了,因此用负载均衡的注解时,不能用IP或者localhost,而应该用服务名。
RestTemplate的底层错误原因(摘录):
自动注入的restTemplate中加入了cloud.netflix*包下面的interceptor,
所以默认会通过RibbonLoadBalancerClient去查找注册中心的instances,
如上面的代码,www.baidu.com肯定不存在,所以就报错了。
问题是 因为 LoadBalancedClient 这里的 choose 根据 Consul注册的服务名(spring.cloud.consul.discovery.serviceName=service-producer) 命中一个服务提供者;
这里就不能使用加了LoadBalanced注解的RestTemplate对象了,因为会根据 host 去Consul查找服务提供者,这样就会抛异常 :No instances available for XXX ,也就是找不到指定的服务ID
原因:"服务地址:" + serviceInstance.getUri()这儿出现了问题。
解决方案:
在配置类配置RestTemplate时,分别配置负载均衡与默认优先选择,即写两个RestTemplate方法
@LoadBalanced
@Bean
public RestTemplate loadBalanced1() {return new RestTemplate();
}@Primary
@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}
解决RestTemplate的No instances available for localhost错误相关推荐
- mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法
mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法 参考文章: (1)mysql出现ERROR1698(28000) ...
- 关于解决Server Tomcat v9.0 Server at localhost failed to start的问题
关于解决Server Tomcat v9.0 Server at localhost failed to start的问题 参考文章: (1)关于解决Server Tomcat v9.0 Server ...
- 解决mysql“Access denied for user 'root'@'localhost'”
2019独角兽企业重金招聘Python工程师标准>>> 解决mysql"Access denied for user 'root'@'localhost'" 我的 ...
- 解决Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误的方法
解决Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误的方法 遇到这个问题的原因很多: 第一种 ...
- 解决elasticsearch里拒绝更新mapping设置的错误
@[TOC] 解决elasticsearch里拒绝更新mapping设置的错误 错误现象 对一个es上已经创建的索引,使用python的elasticsearch_dsl 库, Rejecting m ...
- tomcat启动时错误:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误
今天第一次遇到Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误,并且在错误提示的后半段出现了 ...
- ubuntu18.04.4 安装 dlib (解决 Running setup.py install for dlib ... error错误)
ubuntu18.04.4 安装 dlib (解决 Running setup.py install for dlib - error错误) 直接安装出现错误: Running setup.py in ...
- Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法
Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法 参考文章: (1)Centos6 升级glibc-2.17,解决 ...
- 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误
解决ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' 错误 文章目录: 一.错误原因分析 二.解决方式 调试了好久 ...
- 成功解决调用密钥报错4001 加密方式错误
成功解决调用密钥报错4001 加密方式错误 目录 解决问题 解决思路 解决方法 解决问题 成功解决调用密钥报错4001 加密方式错误 解决思路 秘钥没有打开,会出现这样的错误! 解决方法 关掉密钥按钮 ...
最新文章
- 众创汇定制如何革新工业4.0?
- ScheduleThreadPoolExecutor的工作原理与使用示例
- hdu 5019 第k大公约数
- selenium 等待_Selenium等待:内隐,外显,流利和睡眠
- pip/conda导出 requirements.txt 注意事项
- git配置用户信息_git系列教程(4)-单用户配置
- 作者:程学旗(1972-),男,中国科学院计算技术研究所研究员、博士生导师、副所长,中国科学院网络数据科学与技术重点实验室主任。...
- 今天的圆圆的深圳4j
- Python 三元表达式、列表推导式、生成器表达式
- 2009年IT行业最重要的十大认证
- 一周试用yii开发一个带各种该有功能的web程序(三)
- 逻辑与、逻辑或||和逻辑非!
- 模拟无线透传的STM32的24L01无线模块与串口USART通信
- C语言int 类型的表示范围 sizeof()函数
- 免费开源解压缩软件7-Zip
- linux+cs1.6服务器搭建,Linux玩CS反恐精英的方法
- 《潮流时装设计——世界顶级时装CAD制板技巧》——1.1 什么是服装CAD
- 移动哨兵远程监控系统方案
- 深入理解vue中的slot与slot-scope (简单易懂)
- 复杂问题(大型系统)的对象模型通常由哪几个层次组成
热门文章
- David G. Lowe课题组 Fully Automatic Multi-target Tracking System
- Element 中表格表头添加搜索图标和功能使用
- Java多线程系列--【JUC集合09】- LinkedBlockingDeque
- 二进制漏洞挖掘技术实战
- 财务报表java_财务报表识别
- Photoshop插件-证件照-3寸裁剪-3寸排版-脚本开发-PS插件
- Linux 错误E45,readonly optionisset(add ...)
- SQL 升序、降序排列
- 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密
- java json 特殊字符处理_Json特殊字符处理