Spring cloud 在跨服务调用(feign)时 开启熔断器 (hystrix)获取报错信息 返回友好提示

本文介绍了在Spring Cloud Feign中如何处理跨服务调用的异常。当开启熔断器后,通过`@FeignClient`的`fallback`属性可以设置简单错误处理,但无法获取错误信息。若需获取详细错误信息,应使用`fallbackFactory`属性。示例代码展示了如何在`LogsFallbackFactory`中创建一个自定义的fallback实现,从而捕获并打印异常信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开启熔断器后 如果 跨服务失败 调用某个方法 处理一些 事情 使用
@FeignClient(name = “logs-service”, fallback = LogFall.class)
fallback 这个属性 是不可以获取 错误信息 只能给予友好提示 等等
在这里插入图片描述

如果需要获取 错误信息 则使用
@FeignClient(name = “logs-service”, fallbackFactory = LogsFallbackFactory.class)

fallbackFactory 这个属性
在这里插入图片描述
然后 在 LogsFallbackFactory.class 类中 写具体 获取 错误信息的程序

package com.erp.init.feign.fallback.log;

import com.erp.api.entities.logs.YsHandleLog;
import com.erp.api.out.R;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * User: Json
 * <p>
 * Date: 2022/3/10
 **/
@Slf4j
@Component
public class LogsFallbackFactory implements FallbackFactory<LogFall> {

    @Override
    public LogFall create(Throwable cause) {
        return new LogFall() {
            @Override
            public R save(YsHandleLog ysHandleLog) {
              //  log.info("" + JSONObject.toJSONString(ysHandleLog));
                // 异常抛出
                log.error("【跨log服务调用异常】"+cause.getMessage(),cause);
                return null;
            }
        };
    }
}
package com.erp.init.feign.fallback.log;

import com.erp.api.entities.logs.YsHandleLog;
import com.erp.api.out.R;
import com.erp.init.feign.LogFeign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * User: Json
 * <p>
 * Date: 2022/3/11
 **/
@Slf4j
@Component
public class LogFall implements LogFeign {
    @Override
    public R save(YsHandleLog ysHandleLog){
        return null;
    }
}

在这个类里 在去重写 fallback 这个属性对应的类 方法

根据个人需求 更改 也可以不实现

因为 fallback 和 fallbackFactory 这两个属性 不能共同使用

如果都需要 可以仿照 以上写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Json____

您的鼓励是我创作的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值