com.netflix.hystrix.contrib.javanica.exception

今天在学习springcloud的hystrix的熔断机制时遇到报错:com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn’t found: hystrixGet([class java.lang.Long])] with root cause

经过核查已经解决!
原代码:

package com.springcloud.controller;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.springcloud.pojo.Dept;
import com.springcloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author panglili
 * @create 2022-07-31-13:49
 */
@RestController
public class DeptController {
    @Autowired(required = true)
    private DeptService deptService;

        //熔断机制,此方法调用失败后去调用定义的备选方法
    @HystrixCommand(fallbackMethod = "hystrixGet")
    @GetMapping("/dept/get/{id}")
    public Dept queryById(@PathVariable("id") Long id){
        Dept dept = deptService.queryById(id);

        if(dept==null){
            throw new RuntimeException("id====>"+id+"不存在信息无法找到");
        }

        return dept;
    }

    //上面的方法蹦了之后执行的备选方法
    public Dept hystrixGet(@PathVariable("id") long id){
        return new Dept()
                .setDeptno(id)
                .setDb_name("id===>"+id+"没有对应信息")
                .setDb_source("no this database in mysql");
    }

}

仔细看上图的代码,hystrix熔断机制要求处理的备选方案参数必须和原来一致,由于我的粗心,将备选参数类型写成了小写long所以报错,更改后已经正常,和我一样错误的记得检查参数类型是否一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值