SpringCloud學習中遇到的一些bug

bug

There was a problem with the instance info replicator

  • 錯誤原因:
    該服務(wù)嘗試將自己作為客服端注冊
  • 解決辦法:
    在application.yml配置文件中弧关,設(shè)置
# 注冊Eureka服務(wù)
eureka:
  client:
    # Eureka服務(wù)注冊中心會將自己作為客戶端來嘗試注冊它自己栓票,必須禁止
    register-with-eureka: false
    fetch-registry: false

實體類轉(zhuǎn)化出錯: disable SerializationFeature.FAIL_ON_EMPTY_BEANS

  • 錯誤原因:
    使用的框架是Spring Boot痰哨,處理完請求之后,返回數(shù)據(jù)之前沪么,在POJO轉(zhuǎn)化成JSON時,有些屬性違背輸出規(guī)則或者有些屬性循環(huán)引用會造成無法輸出。
  • 解決辦法:
    在實體類上面加上注解
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })

This application has no explicit mapping for /error, so you are seeing this as a fallback.

  • 錯誤原因: 很可能是你Application啟動類放的位置不對。要將Application放在最外層请祖,也就是要包含所有子包。
  • 解決辦法: 將Application放在最外層脖祈,也就是要包含所有子包肆捕。

message:Request method 'POST' not supported

There was an unexpected error (type=Internal Server Error, status=500).
status 405 reading UserFeignClient#getUser(User); content: {"timestamp":"2018-09-07T09:01:14.290+0000","status":405,"error":"Method Not Allowed","message":"Request method 'POST' not supported","path":"/feign-get-user"}

  • 錯誤原因:
    該請求不會成功,只要參數(shù)是復(fù)雜對象盖高,即使指定了是GET方法慎陵,feign依然會以POST方法進行發(fā)送請求∮靼拢可能是我沒找到相應(yīng)的注解或使用方法錯誤席纽。

  • 解決辦法:

    // 該請求不會成功,只要參數(shù)是復(fù)雜對象撞蚕,即使指定了是GET方法胆筒,feign依然會以POST方法進行發(fā)送請求≌┩悖可能是我沒找到相應(yīng)的注解或使用方法錯誤仆救。
    @RequestMapping(method = RequestMethod.GET, value = "/feign-get-user")
    public User getUser(User user);
    
    //正確用法
    @RequestMapping(method = RequestMethod.GET, value = "/feign-get-user")
    public User getUser(@RequestParam("id") Long id, @RequestParam("username") String username, @RequestParam("age") String age);
}

Error creating bean with name 'eurekaAutoServiceRegistration'

org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)

  • 錯誤原因:
    • 同一個服務(wù)重復(fù)啟了;
    • 或者是端口被其他應(yīng)用占用了。
  • 解決辦法:
    釋放被占用的端口即可

Read timed out

  • 詳細描述: com.sun.jersey.api.client.ClientHandlerException: java.net.SocketTimeoutException: Read timed out
  • 錯誤原因:
    應(yīng)用剛啟動矫渔,需要通過ribbon從eureka上拉取服務(wù)彤蔽;需要將虛擬主機名轉(zhuǎn)化為ip地址
  • 解決辦法:
    這是比較正常的現(xiàn)象,只需要再次刷新就好了

解決第一次請求報超時異常的方案

Cannot execute request on any known server

  • 錯誤詳細描述: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
  • 錯誤原因:
    Peer Awareness配置
# application.yml (Two Peer Aware Eureka Servers). 
---
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2/eureka/

---
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1/eureka/
  • 解決辦法:
    修改C:\Windows\System32\drivers\etc路徑下的hosts文件油够,在文末加入以下內(nèi)容:
127.0.0.1 peer1 peer2 peer3

com.netflix.client.ClientException: Load balancer does not have available server for client: microservice-provider-user

  • 錯誤原因:
    消費者調(diào)用服務(wù)時無服務(wù)可用
  • 解決辦法:
  1. 確定本機是否關(guān)閉防火墻
  2. 是否導(dǎo)入eureka的jar包
    <!-- 注冊Eureka服務(wù) -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
  1. 確定是否導(dǎo)入hystrix的jar包
    <!-- 配置hystrix所需依賴的包 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
  1. 確定配置文件服務(wù)前面是否有空格


Unable to connect to Command Metric Stream

  • 錯誤原因:
    配置文件不完整
  • 解決辦法:
    ==Hystrix Metrics Stream==
    要啟用Hystrix度量標準流蚁袭,請在spring-boot-starter-actuator上包含依賴項,并設(shè)置==management.endpoints.web.exposure.include:hystrix.stream==石咬。 這樣做會將 /actuator/hystrix.stream公開為管理端點揩悄,如以下示例所示:
    • pom.xml
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
       
        </dependency>
    
    • application.yml
        # 配置Hystrix Metrics Stream
        management:
          endpoints:
            web:
              exposure:
                include: hystrix.stream
    

hystrix.stream一直是ping

  • 錯誤原因:
    • 因為沒有請求任何東西,所以看不到內(nèi)容;
    • 缺少配置監(jiān)控的依賴
    • 配置環(huán)境不完善
  • 解決辦法:
     <!-- Actuator是SpringBoot提供的對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能鬼悠,可以查看應(yīng)用配置的詳細信息;
        如果提示 Unable to connect to Command Metric Stream.則需要引入以下包!
         -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency> 
    
    • 完善配置環(huán)境
     # 使用Hystrix Metrics Stream必備 
     management:
       endpoints: 
         web:
           exposure: 
             include: hystrix.stream   
    

turbine.stream一直是ping

  • 錯誤原因:
    • 因為沒有請求任何東西删性,所以看不到內(nèi)容;
    • 缺少配置監(jiān)控的依賴
    • Eureka服務(wù)注冊中心未將自己作為客戶端來嘗試注冊它自己
    # 注冊Eureka服務(wù)
    eureka:
      client:
        register-with-eureka: false
        fetch-registry: false
    
    • 缺少配置監(jiān)控的依賴
  • 解決辦法:
     <!-- Actuator是SpringBoot提供的對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能,可以查看應(yīng)用配置的詳細信息;
        如果提示 Unable to connect to Command Metric Stream.則需要引入以下包!
         -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency> 
    
    • Eureka服務(wù)注冊中心未將自己作為客戶端來嘗試注冊它自己
    # 注冊Eureka服務(wù)
    eureka:
      client:
    #    register-with-eureka: false
    #    fetch-registry: false
    
    • 添加配置的依賴(作為客服端的都需要配置)
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency> 
    

Health Indicator訪問無結(jié)果

  • 錯誤原因:
    • 未導(dǎo)入依賴包
    • 版本原因?qū)е略L問方式改變了
  • 解決辦法:
    • 導(dǎo)入依賴包
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
    
     {
         "_links": {
             "self": {
                 "href": "http://localhost:8030/actuator",
                 "templated": false
             },
             "health": {
                 "href": "http://localhost:8030/actuator/health",
                 "templated": false
             },
             "info": {
                 "href": "http://localhost:8030/actuator/info",
                 "templated": false
             }
         }
     }
    

Turbine監(jiān)控多個服務(wù),配置后,出現(xiàn)只監(jiān)控到一部分服務(wù)情況

  • 錯誤原因:
    • 配置有問題
  • 解決辦法:
    • application.xml配置如下:
    # 0焕窝、配置多個監(jiān)控服務(wù)
    turbine:
      appConfig: microservice-consumer-goods-feign-with-hystrix,microservice-consumer-goods-ribbon-with-hystrix
      clusterNameExpression: "'default'"
    
    # 1蹬挺、僅配置監(jiān)控一個服務(wù)
    turbine:
      aggregator:
        clusterConfig: MICROSERVICE-CONSUMER-GOODS-RIBBON-WITH-HYSTRIX
      appConfig: microservice-consumer-goods-ribbon-with-hystrix
    
    • 各個微服務(wù)的Controller配置

      每個微服務(wù)均需要加上如下注解:
    //配置hystrix所需注解
    @EnableCircuitBreaker
    

"description":"No key was installed for encryption service","status":"NO_KEY"

  • 錯誤描述
{
    "description": "No key was installed for encryption service",
    "status": "NO_KEY"
}
encrypt: 
  key: foobar

如果是在application.yml中配置秘鑰有可能讀取不到,依然報該錯誤

  • 查看JCE提供者榕茧,和一些相應(yīng)算法
import java.security.*;

public class JceInfo {
    public static void main(String[] args) {
        System.out.println("-------列出加密服務(wù)提供者-----");
        Provider[] pro = Security.getProviders();
        for (Provider p : pro) {
            System.out.println("Provider:" + p.getName() + " - version:" + p.getVersion());
            System.out.println(p.getInfo());
        }
        
        System.out.println();
        System.out.println("-------列出系統(tǒng)支持的 消息摘要算法:");
        for (String s : Security.getAlgorithms("MessageDigest")) {
            System.out.println(s);
        }
        
        System.out.println();
        System.out.println("-------列出系統(tǒng)支持的生成 公鑰和 私鑰對的算法:");
        for (String s : Security.getAlgorithms("KeyPairGenerator")) {
            System.out.println(s);
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末发乔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雪猪,更是在濱河造成了極大的恐慌栏尚,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件只恨,死亡現(xiàn)場離奇詭異译仗,居然都是意外死亡,警方通過查閱死者的電腦和手機官觅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門纵菌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人休涤,你說我怎么就攤上這事咱圆。” “怎么了功氨?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵序苏,是天一觀的道長。 經(jīng)常有香客問我捷凄,道長忱详,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任跺涤,我火速辦了婚禮匈睁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘桶错。我一直安慰自己航唆,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布院刁。 她就那樣靜靜地躺著糯钙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黎比。 梳的紋絲不亂的頭發(fā)上超营,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音阅虫,去河邊找鬼。 笑死不跟,一個胖子當著我的面吹牛颓帝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼购城,長吁一口氣:“原來是場噩夢啊……” “哼吕座!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瘪板,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吴趴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侮攀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锣枝,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年兰英,在試婚紗的時候發(fā)現(xiàn)自己被綠了撇叁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡畦贸,死狀恐怖陨闹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情薄坏,我是刑警寧澤趋厉,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站胶坠,受9級特大地震影響觅廓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涵但,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一杈绸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矮瘟,春花似錦瞳脓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哨啃,卻和暖如春烧栋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拳球。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工审姓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祝峻。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓魔吐,卻偏偏與公主長得像扎筒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子酬姆,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容