激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日本一 | 日本羞羞的午夜电视剧 | 欧美18xxxx | 亚洲成人综合网站 | 久久久一二三 | 久久国产精| 曰本三级日本三级日本三级 | 一级裸体视频 | 久久伊人精品热在75 | 免费看国产| 美女网站色免费 | 亚洲成人在线免费 | 特一级毛片 | 激情欧美在线 | 久久精品观看 | 国产在线观看一区二区三区 | 精品国产一区二区三区天美传媒 | 黄色香蕉视频 | 欧美成人鲁丝片在线观看 | 91午夜在线观看 | 手机免费看一级片 | 青青草华人在线 | 美女被免费网站在线软件 | 成人福利视频在 | 噜噜噜在线 | 国产亚洲精品成人a | 国产精品久久久毛片 | 国产视频在线免费观看 | 午夜视频在线 | 手机免费看一级片 | 有色视频在线观看 | 欧美精品一区二区三区久久久 | 精品二区在线观看 | 日本xxxx色视频在线观看免费, | 欧美日韩免费看 | 欧美a在线观看 | 欧美爱爱视频网站 | 狠狠干五月天 | 中文字幕在线播放一区 | 99影视电影电视剧在线播放 | 国产精品亚洲一区二区三区在线观看 |