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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本五级床片全都免费播放 | 天天做日日做天天添天天欢公交车 | 国产精品激情综合久久 | 午夜免费小视频 | 二次元美女脱裤子让男人桶爽 | 日韩精品视频观看 | 青青热久免费精品视频精品 | 四虎2023| 日韩欧美不卡视频 | 闺蜜调教我做她的脚奴 | 日韩欧美亚洲国产高清在线 | aaa一级特黄| 亚洲国产成人精品激情 | 黑人破中国女人处 | 国产欧美一区二区精品久久久 | 日本在线小视频 | 免费高清视频在线观看 | 97久久天天综合色天天综合色hd | 欧美三级小视频 | 91精品国产亚一区二区三区 | 欧美添下面视频免费观看 | 女人把扒开给男人爽 | 亚州第一页 | 小妇人电影免费完整观看2021 | 毛片小视频 | 九九热这里只有精品视频免费 | 亚洲视频在线看 | 久久无码AV亚洲精品色午夜麻豆 | 视频网站入口在线看 | 国产性色视频 | 清纯唯美 亚洲 | 日韩妹妹 | 99久久爱热6在线播放 | 欧美色图日韩色图 | 欧美白人猛性xxxxx69交 | 成年女人毛片免费观看97 | 午夜想想爱 | 国产香蕉视频在线观看 | 双子母性本能在线 | 青青草国产一区二区三区 | 国产激情一区二区三区成人91 |