feign.FeignException: status 404 reading GoodsClient#querySpuBoByPage(String,Boolean,Integer,Integer); content:
乐优商城项目,搜索微服务:在导入数据时,报错。
feign.FeignException: status 404 reading GoodsClient#querySpuBoByPage(String,Boolean,Integer,Integer); content:
{"timestamp":"2020-03-27T01:10:19.862+0000","status":404,"error":"Not Found","message":"No message available","path":"/goods/spu/page"}
猜想,
既然报的是404 肯定是path有问题 所有出现问题的地方有可能是@RequestMapping@service@controller等没有加,但我反复确认过,发现都没有问题,再三确认过代码没问题后,便去寻找是否之前做测试插入数据库时没有编写完整插入语句之导致某张表字段有误甚至为空,所以便想去把之前插入的数据全部删除,
但是发现数据库此时很乱了,所以删除库后重新导入类之前资料的数据库文件。
强调: 数据库备份的重要性 !
但重启微服务后,程序依旧报同样的错....好样的...
解决
因为是RESTful 风格的项目,所以
@Controller 要改为@RestController
注意:路径要查看清楚(是否有一级地址,我的GoodsController就没有,暴漏接口时我却在加上了一级目录...所以出错了,粗心)
错误解决,
之后继续报错:
feign.RetryableException: Read timed out executing GET http://item-service/spu/page?page=1&rows=5
解决
#--------------Feign负载均衡配置 配置全局超时时间 毫秒单位 根据业务酌情配置
ribbon:
ConnectTimeout: 50000 #请求连接的超时时间,默认时间为1秒
ReadTimeout: 50000 #请求处理的超时时间
原因:由于Feign底层使用Ribbon调用请求,ribbon的默认超时时间为1s,所以超过1s就报错
在search搜索微服务的application.yml配置文件中添加ribbon的超时配置,我配置了5秒还是报错,于是我改成了50秒,OK成功!