spring boot整合Fegin实现远程调用

spring boot整合Fegin实现远程调用

使用fegin实现远程调用,首先明确调用方和被调用方的关系

①被调用方(CMS)和调用方(EQMS)是共属一个微服务项目,都注册在一个eureka服务上才能被调用到

②被调用方只需要在Controller声明要被调用方调用的Api接口即可

③调用方需要声明是fegin的客户端去调用其他服务的接口

假设要调用的是CMS上的该接口

@DeleteMapping("/delete")
public Integer delete(String id){
    //根据该id删除CMS系统的数据
    remove(id);
}

1.在调用方的启动类上加上@EnableFeignClients

@@EnableFeignClients
@SpringBootApplication
public class EQMSApplication{
    
}

2.调用方需要创建远程调用的client及熔断回调类

//直接可以创建一个内部类,声明被调用方的api接口,假如被调用方接口异常就会回调异常类进行异常声明
//name可以声明value,CMS是我系统服务器的名称直接调用该系统,名称要去eureka上面看要调用系统的名称即可,url可省略,我是用来测试在本地进行调用
//CmsServiceFallBack 这是如果fegin调用失败需要熔断以及提示错误信息的类
@FeignClient(name="CMS",url="${conf.address.cms}",fallbackFactory=CmsServiceFallBack .class)
public interface CmsFeignClient {
    
    //两种传参方法,请求的api cms后面的路径是被调用方的路径前缀
    @RequestMapping("/cms../delete/{id}", method = RequestMethod.Post)
    public Integer delete(@PathVariable String id);
    
    //调用方的属性值名称id要跟被调用方的名称一致!!!
    @RequestMapping("/cms../delete", method = RequestMethod.Post)
    public Integer delete(@RequestParam("id") String id);
    
}

@Component
class CmsServiceFallBack implements FallbackFactory<CmsFeignClient>{
    protected Logger=LoggerFactory.getLogger(getClass());
    
    @Override
    public CmsFeignClient create(Throwable throwable){
        Result result=new Result();
        result.setCode(504);
        result.setMsg(throwable.getMessage());
        return new CmsFeignClient(){
            @Override
            public Integer changes(String id){
                logger.info(。。)return "远程调用失败!"}
        }
    }
}

//可以配置微服务地址本地调试
cof:
	address:
		cms:http://localhost:8800


//开启服务熔断
fegin:
	hystrix:
		enabled:true

eureka上面看要调用的系统名称
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值