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

  1. 通过@HystrixCommand 来配置hystrix熔断的时候,超时时间设置的3秒,碰到了fallback method wasn’t found: fallback([class java.lang.Boolean]),配置的接口方法有个Boolean类型的参数,而fallbackMethod对应的熔断方法是无参的,代码如下所示:
@GetMapping("/fallback")
public Mono<String> fallback() {
   return Mono.just("hystrix common, fallback");
}


@HystrixCommand(fallbackMethod = "fallback", commandProperties = {
        @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")
})
@GetMapping("/test/fallback")
public String index(@RequestParam(value = "isSleep", defaultValue = "true") Boolean isSleep) throws InterruptedException {
   log.info("是否睡眠:{}, 开始时间是:{}", isSleep, LocalDateTime.now());
   if (isSleep){
       TimeUnit.SECONDS.sleep(6);
   }
   log.info("结束时间是:{}", LocalDateTime.now());
   return "睡眠结束";
}

如图所示,postman请求
在这里插入图片描述
2. 再熔断方法添加参数
在这里插入图片描述
接着测试,如图所示,会出现如下错误

{
    "timestamp": "2020-01-14T02:46:56.971+0000",
    "path": "/test/fallback",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Incompatible return types. \nCommand method: public java.lang.String com.txzhang.springcloud.GatewayClientApplication.index(java.lang.Boolean) throws java.lang.InterruptedException;\nFallback method: public reactor.core.publisher.Mono com.txzhang.springcloud.GatewayClientApplication.fallback(java.lang.Boolean);\nHint: Fallback method 'public reactor.core.publisher.Mono com.txzhang.springcloud.GatewayClientApplication.fallback(java.lang.Boolean)' must return: class java.lang.String or its subclass"
}

在这里插入图片描述

这是因为熔断方法的返回值和被熔断方法的返回值不一样

  1. 修改熔断发方法的返回值为String
@GetMapping("/fallback")
public String fallback(Boolean isSleep) {
    log.debug("参数 isSleep : {}", isSleep);
    return "hystrix common, fallback";
}

测试如图所示,正常熔断了
在这里插入图片描述

总结:熔断方法的返回值和参数列表需和原方法一致

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值