1. 程式人生 > >Spring Cloud 關於 hystrix 的異常 fallback method wasn't found

Spring Cloud 關於 hystrix 的異常 fallback method wasn't found

消費者服務--service 的實現如下:

@Service
public class BookService {

    @Autowired
public RestTemplate  restTemplate;

    @HystrixCommand(fallbackMethod = "addServiceFallback")
    public  Book   getBook( Integer  bookId ){
        return  restTemplate.getForObject("http://provider-service/boot/book?bookId={bookId}"
,Book.class , bookId); } public String addServiceFallback(){ System.out.println("error addServiceFallback.... "); return "error" ; } }

就會出現如下所述的異常

Whitelabel Error Page

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

Fri May 25 14:27:51 CST 2018There was an unexpected error (type=Internal Server Error, status=500).

fallback method wasn't found: addServiceFallback([class java.lang.Integer])

這是因為指定的 備用方法 addServiceFallback 和 原方法getBook 的引數個數,引數型別  不同造成的;

修改addServiceFallback 方法:

public  String addServiceFallback(Integer  bookId){
    System.out.println("error addServiceFallback.... ");
    return  "error" ;
}
繼續執行,就會出現如下所述的異常

Whitelabel Error Page

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

Fri May 25 14:32:24 CST 2018There was an unexpected error (type=Internal Server Error, status=500).Incompatible return types. Command method: public com.bmcc.springboot.model.Book com.bmcc.springboot.service.BookService.getBook(java.lang.Integer); Fallback method: public java.lang.String com.bmcc.springboot.service.BookService.addServiceFallback(java.lang.Integer); Hint: Fallback method 'public java.lang.String com.bmcc.springboot.service.BookService.addServiceFallback(java.lang.Integer)' must return: class com.bmcc.springboot.model.Book or its subclass

這是因為指定的 備用方法 addServiceFallback 和 原方法getBook 雖然 引數個數,引數型別  相同 ,但是  方法的返回值型別不同造成的;

修改addServiceFallback 方法:

public  Book  addServiceFallback(Integer  bookId){
    System.out.println("error addServiceFallback.... ");
    return  new Book() ;
}

繼續執行,這樣就可以看到當一個服務提供者異常關閉時, 消費者(消費者採用輪詢的方式消費服務)再繼續訪問服務時,不會丟擲異常頁面,而是如下:

{"bookId":0,"bookName":null,"price":null,"publisher":null}

相關推薦

Spring Cloud 關於 hystrix異常 fallback method wasn't found

消費者服務--service 的實現如下:@Service public class BookService { @Autowired public RestTemplate restTemplate; @HystrixCommand(fallbackM

關於hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found異常

在Spring Cloud中使用斷路器後可能會遇到:com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found典例如下:@Se

關於 hystrix異常 fallback method wasn't found

llb -s title int http itl man .class comm 典型如下: @HystrixCommand(fallbackMethod = "fallbackHi") public String getHi(String x) { String

spring cloud: Hystrix(六):feign的註解@FeignClient:fallbackFactory(類似於斷容器)與fallback方法

fallbackFactory(類似於斷容器)與fallback方法 feign的註解@FeignClient:fallbackFactory與fallback方法不能同時使用,這個兩個方法其實都類似於Hystrix的功能,當網路不通時返回預設的配置資料. fallback方法的使用: 在入口檔案開

Spring Cloud Hystrix 定義服務降級和異常 處理

概述 原來的計劃是寫一篇大而全的文章,用來介紹spring cloud Hystrix,但是想了想,這樣的做法其實也並不是特別好,所以 打算把原來的文章拆分,這樣能夠看起來比較清晰。 服務降級 繼承H

第五章 服務容錯保護:Spring Cloud Hystrix

目標 作用 發熱 防止 第三方庫 控制 信號 系列 微服務   在微服務架構中,我們將系統拆分為很多個服務,各個服務之間通過註冊與訂閱的方式相互依賴,由於各個服務都是在各自的進程中運行,就有可能由於網絡原因或者服務自身的問題導致調用故障或延遲,隨著服務的積壓,可能會導致服務

Spring Cloud Hystrix(熔斷器簡介)

pos 新建 ribbon 線程 con 註冊中心 all class bsp 在分布式框架中當某個服務單元發生故障之後通過斷路器的故障監控向調用方返回一個錯誤響應,而不是長期等待這樣就不會使得線程因調用故障服務被長時間占用不放,避免了故障在分布式系統中的蔓延 針對上述問題

spring cloud hystrix監控

ota oar ati AI gpo 1.5 div OS org <dependencyManagement> <dependencies> <dependency> <groupId>org.sprin

Spring Cloud Hystrix 斷路器

autowired ping sched pack pre mage 接口 net say 1.繼承feign和ribbon 2.ribbon服務修改內容 新增依賴pom.xml: <dependency> <groupId>

Spring Cloud Hystrix - 服務容錯

無法 bug 圖片 pre 保持 ram cep 服務 one 服務容錯和Hystrix 在微服務架構中,由於某個服務的不可用導致一系列的服務崩潰,被稱之為雪崩效應。所以防禦服務的雪崩效應是必不可少的,在Spring Cloud中防雪崩的利器就是Hystrix,Spring

試水Spring Cloud Hystrix

端口 something 出現 object 分享 oca world client ont Spring Cloud Hystrix是一個容錯庫,它實現了斷路器模式,使得當服務發生異常時,會自動切斷連接,並將請求引導至預設的回調方法。 服務端 在Spring Tool S

spring cloud: Hystrix(四):feign類似於hystrix的斷容器功能

分享 use implement ack all cli req feign ret spring cloud: Hystrix(四):feign使用hystrix @FeignClient支持回退的概念:fallback方法,這裏有點類似於:@HystrixCommand

springboot 2.0 + spring cloud + hystrix dashboard

springcloud整合hystrix dashboard,開啟介面報了不能連線 Unable to connect to Command Metric Stream.,現在整理下幾種解決方法: 1. 配置檔案暴露埠,填寫hystrix地址時,按照single hystrix提示的填寫即

spring cloud: Hystrix(七):Hystrix的斷容器監控dashboard

exec adb comm 分享圖片 variable res for 返回 -h Hystrix的斷容器監控dashboard。 dashboard是用來監控Hystrix的斷容器監控的,圖形化dashboard是如何實現指標的收集展示的。 dashboard 本地端口8

spring cloud: Hystrix(八):turbine叢集監控(dashboard)

turbine是聚合伺服器傳送事件流資料的一個工具,hystrix的監控中,只能監控單個節點,實際生產中都為叢集, 因此可以通過turbine來監控叢集下hystrix的metrics情況,通過eureka來發現hystrix服務。 dashboard可以監控單個數據流,通過turbine可以顯示叢集的資

踩坑 Spring Cloud Hystrix 執行緒池佇列配置

背景: 有一次在生產環境,突然出現了很多筆還款單被掛起,後來排查原因,發現是內部系統呼叫時出現了Hystrix呼叫異常。在開發過程中,因為核心執行緒數設定的比較大,沒有出現這種異常。放到了測試環境,偶爾有出現這種情況,後來在網上查詢解決方案,網上的方案是調整maxQueueSize屬性就好了,當時調整了一下

微服務spring cloudHystrix簡介和通過方式整合H

Hystrix簡介 Hystrix是由Netflix開源的延遲和容錯庫,用於隔離訪問遠端系統、服務或者第三方庫,防止級聯失敗,從而提升系統的可用性與容錯性。Hystrix主要通過以下幾點實現延遲和容錯。 包裹請求:使用HystrixCommand(或HystrixObservable

Spring Cloud Hystrix(儀表盤+Turbine叢集)(4)

在Spring Cloud 中構建一個Hystrix Dashboard非常容易只需要4步: 1.建立一個Spring Boot工程,命名為hystrix-dashboard。 2.編輯pom.xml檔案,如: <?xml version="1.0" encoding="

Spring Cloud Hystrix(服務容錯保護)(3)

1.請求合併 在微服務的架構中的依賴通常通過遠端呼叫來實現,而遠端呼叫最常出現的問題是通訊消耗與連線數佔用。Hystrix提供了HystrixCollapser來實現請求合併,以減少通訊消耗和執行緒數的佔用。 HystrixCollapser實現了在HystrixCommand之前放置一

Spring Cloud Hystrix(服務容錯保護)(2)

1.建立請求命令 Hystrix命令(HystrixCommand)它用來封裝具體的依賴服務呼叫邏輯。 我們可以用繼承的方式實現: public class HelloCommand extends HystrixCommand<String> { privat