springcloud:Fegin实现微服务间调用

首先给大家看下目录结构,比如要调用basicdata项目,需新建一个basicdata-api

一、引入fegin包至pom文件,如上图中pom文件

二、创建微服务调用的接口文件

@FeignClient(name = "fenjin-cloud-basicdata", configuration = FeignConfiguration.class, fallbackFactory = DeviceFallbackFactory.class)
public interface DeviceServiceApi {

    @RequestMapping(value = "/device/DeviceMonitorStatusId_count", method = {RequestMethod.POST})
    @ResponseBody
    public Result countByDeviceMonitorStatusId(@RequestBody Device device);

    @RequestMapping(value = "/device/DeviceMap_List", method = {RequestMethod.POST})
    @ResponseBody
    public Result DeviceMapList(@RequestBody Device device);
}

注:1.@FeignClient 声明调用服务  name:表示项目名称。fallbackFactory是创建的需要调用的接口的回滚工厂,用于服务失败后调用(大家可以查阅下这个注解的用法,有两种方式,一种是经过注册中心,一种不经过注册中心。我这里都经过注册中心)

       2.另外这里的接口需要与调用的接口保持一致

      3.另外需要在fenjin-cloud-basicdata启动类上加上@EnableFeignClients注解,如下图

三、创建微服务实现类,用于微服务调用时报回滚。如下图

@Slf4j
@Component
public class DeviceFallback implements DeviceServiceApi {

    @Setter
    private Throwable cause;

    @Override
    public Result countByDeviceMonitorStatusId(Device device) {
        log.error("feign根据device统计设备状态为{}的信息失败:{}", device, cause);
        return Result.failed("根据设备状态统计服务不可用");
    }

    @Override
    public Result DeviceMapList(Device device) {
        log.error("feign根据device获取设备列表为{}的信息失败:{}", device, cause);
        return Result.failed("根据设备监控状态获取列表服务不可用");
    }
}

四、创建回滚工厂类,用于回滚失败实例的创建

@Component
public class DeviceFallbackFactory implements FallbackFactory<DeviceServiceApi> {
    @Override
    public DeviceServiceApi create(Throwable throwable) {
        DeviceFallback deviceFallback=new DeviceFallback();
        return deviceFallback;
    }
}

五、其他项目直接调用即可,直接调用导入basicdata-api包即可完成调用。如下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值