一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Spring Cloud Feign 熔斷配置的一些小坑

詳解Spring Cloud Feign 熔斷配置的一些小坑

2021-04-23 11:35FutureElement Java教程

這篇文章主要介紹了詳解Spring Cloud Feign 熔斷配置的一些小坑,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.在使用feign做服務調用時,使用繼承的方式調用服務,加入hystrix的熔斷處理fallback配置時,會報錯,已解決。 2.使用feign默認配置,熔斷不生效,已解決。

最近在做微服務的學習,發現在使用feign做服務調用時,使用繼承的方式調用服務,加入hystrix的熔斷處理fallback配置時,會報錯,代碼如下:

?
1
2
3
4
5
6
7
8
9
@requestmapping("/demo/api")
public interface helloapi {
 
  @getmapping("user/{id}")
  user getuserbyid(@pathvariable("id") long id);
 
  @getmapping("hello")
  string echo(@requestparam("name") string name);
}
?
1
2
3
4
@feignclient(value = "ms-server", fallback = consumerfeignservicefallback.class)
public interface consumerfeignservice extends helloapi {
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
@component
public class consumerfeignservicefallback implements consumerfeignservice {
  @override
  public user getuserbyid(long id) {
    return new user();
  }
 
  @override
  public string echo(string name) {
    return "echo error: " + name;
  }
}

報錯如下:

caused by: java.lang.illegalstateexception: ambiguous mapping. cannot map 'com.thoughtworks.demo.consumer.service.consumerfeignservice' method
public abstract java.lang.string com.thoughtworks.demo.api.helloapi.echo(java.lang.string)
to {[/demo/api/hello],methods=[get]}: there is already 'consumerfeignservicefallback' bean method
public java.lang.string com.thoughtworks.demo.consumer.service.consumerfeignservicefallback.echo(java.lang.string) mapped.
 at org.springframework.web.servlet.handler.abstracthandlermethodmapping$mappingregistry.assertuniquemethodmapping(abstracthandlermethodmapping.java:576) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.web.servlet.handler.abstracthandlermethodmapping$mappingregistry.register(abstracthandlermethodmapping.java:540) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.web.servlet.handler.abstracthandlermethodmapping.registerhandlermethod(abstracthandlermethodmapping.java:264) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.web.servlet.handler.abstracthandlermethodmapping.detecthandlermethods(abstracthandlermethodmapping.java:250) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.web.servlet.handler.abstracthandlermethodmapping.inithandlermethods(abstracthandlermethodmapping.java:214) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.web.servlet.handler.abstracthandlermethodmapping.afterpropertiesset(abstracthandlermethodmapping.java:184) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping.afterpropertiesset(requestmappinghandlermapping.java:127) ~[spring-webmvc-4.3.14.release.jar:4.3.14.release]
 at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1687) ~[spring-beans-4.3.14.release.jar:4.3.14.release]
 at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1624) ~[spring-beans-4.3.14.release.jar:4.3.14.release]
 ... 21 common frames omitted

錯誤原因是這里繼承的接口類是一個controller接口,繼承時會繼承到父類的

?
1
@requestmapping("/demo/api")

springmvc在做mapping映射的時候發現consumerfeignservice和consumerfeignservicefallback的mapping重復了,所以拋出異常,如何解決呢?

解決的方法有2個:

一是更改consumerfeignservicefallback的mapping配置,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@component
@requestmapping("fallback/demo/api")
public class consumerfeignservicefallback implements consumerfeignservice {
  @override
  public user getuserbyid(long id) {
    return new user();
  }
 
  @override
  public string echo(string name) {
    return "echo error: " + name;
  }
}

二是使用fallbackfactory,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@component
public class consumerfeignservicefallback implements fallbackfactory<consumerfeignservice> {
 
  @override
  public consumerfeignservice create(throwable cause) {
    return new consumerfeignservice() {
      @override
      public user getuserbyid(long id) {
        return new user();
      }
 
      @override
      public string echo(string name) {
        return "echo error: " + name;
      }
    };
  }
}

運行后,關閉服務提供者,發現熔斷并沒有生效,沒有像單獨使用@hystrixcommand時進入fallback方法,查了很多方式,發現原來是feign的hystix的配置開關沒有打開

解決方法,在application.yml中增加配置如下:

?
1
2
3
feign:
 hystrix:
  enabled: true

在intellij idea里也沒有這個配置的提示,還報告警告,不知道算不算是個bug,這里我使用的版本是

?
1
2
springbootversion = '1.5.10.release'
springcloudversion = 'edgware.sr3'

以上就是我在使用feign時發現的一些小坑,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://my.oschina.net/u/1758970/blog/1798279

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97午夜视频 | 我与恶魔的h生活ova | 思思玖玖玖在线精品视频 | 色综七七久久成人影 | 国模大胆一区二区三区 | 精品福利视频一区二区三区 | 国产日产在线观看 | 哇嘎在线精品视频在线观看 | a免费看 | 精品久久免费视频 | 四虎影视4hutv最新地址在线 | 91久久国产综合精品 | 国产免费一区二区三区免费视频 | 恩不要好大好硬好爽3p | 国产成人免费观看在线视频 | 欧美视频一二三区 | 2020年国产精品午夜福利在线观看 | 国产欧美日韩视频在线观看一区二区 | 国产精品露脸国语对白河北 | 九九热这里只有精品视频免费 | 青青草人人 | 国产在线精品一区二区高清不卡 | 性xxxx直播放免费 | 免费观看的毛片 | 大陆男同志gayxxx | 999精品视频在线观看热6 | 99久久综合给久久精品 | 久久亚洲午夜牛牛影视 | 盲井在线| 乳环贵妇堕落开发调教番号 | 免费精品国产 | 二次元美女内裤凹陷太深 | poronovideos变态极限 | 波多野结衣一区免费作品 | 欧美一区二区福利视频 | 紧身裙女教师波多野结衣 | 国产一卡二卡3卡4卡四卡在线视频 | 欧美亚洲激情在线 | 免费观看国产精品 | 欧美日韩精品一区二区三区高清视频 | 脱jk裙的美女露小内内无遮挡 |