springcloud微服務(eureka + openFeign)

        首先想先說1w個CNM,坑的自己外焦裏嫩。但是功夫不負有心人,終於微服務的基礎框架達成了。

一、搭建思路

      之前一直用springBoot,上手springCloud還是很快的。實際也就是把springBoot拆成多個項目,然後其他項目通過model或jar引入的方式。我這裏的思路:

clouddata:常量、統一出參對象、dto、vo

eureka:服務註冊中心

commonservice:通用服務(有其他服務實際就是複製這個項目,改改)

web:測試調用(也可以作爲統一接口層)

二、搭建過程

這裏我就不細說了,有人寫的很詳細的了,我這裏是參考博友的:

https://blog.csdn.net/qq_37511501/article/details/94402282

網上說服務提供方也是調用方,所以服務提供方有的也引入了openFeign的支持。我這裏是暫時沒有這樣處理,主要還是怕自己糊了,所以先規矩搭建。

三、遇到的坑

我這裏通用服務單獨跑是正常的,依然是可以使用url請求的。web調用也正常,能進通用服務的實現類。唯一的問題就是web裏用統一出參對象接收不了,一直報json轉換器的問題。

於是:

1、各種加Configuration,使勁折騰了半天configureMessageConverters,都失敗,報錯依然

2、懷疑不能使用Result<?>接收,改成指定對象,依然失敗

3、懷疑序列化,修改result統一出參對象實現序列化

最後,使用翻譯插件,對報錯上面的一段話翻譯(警告WARN)

警告說我的統一出參對象的code轉換失敗,於是再細看統一出參,一行行過(這裏其實已經說明了setCode方法),終於發現裏面setCode方法有2個,有一個是傳枚舉ResultCode對象設置code。你不是說基礎對象jackson轉換失敗嗎,好,我就去掉這個枚舉對象setCode方法,修改業務調用都只能傳int。重新編譯,啓動服務註冊、啓動服務、啓動調用測試。postman調用測試,終於熟悉的返回出現了。

我這個問題看似報的Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.codec.DecodeException: Could not extract response: no suitable HttpMessageConverter found for response type 

實際上不是轉換器的問題,就是統一出參裏使用了枚舉對象的問題。轉換爆出來的僅僅是警告被我忽略了,以後要注意,不要輕易放過任何一個細節。

 

 

發佈了84 篇原創文章 · 獲贊 16 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章