樂優商城項目,搜索微服務:在導入數據時,報錯。
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成功!