• SpringCloud中Feign的适配器的实现方案


    前言

    最近在做微服务的项目,各个系统之间需要进行调用,然后用一个适配器来实现服务之间的feign调用,使用适配器进行统一管理。

    实现方案

    首先我们需要将服务的名称进行单独的配置,可以方便的进行切换和扩展,我们使用bootstrap.yml来进行配置,这样引入jar包的时候,可以将配置互补到我们本身项目的application.yml中。
    在我们的bootstrap.yml中进行配置。

    ## 配置的服务名称
    server-name:
      # 配置在eureka中注册的服务名称
      feignDemo: demo
    
    

    我们这里配置了一个demo,demo是spring.application.name。我们需要调用demo项目中的接口。
    然后配置feign与ribbon

    feign:
      hystrix:
       threadpool:
        default:
         coreSize: 100
        enabled: true
        command:
          default:
           execution:
             isolation:
              thread:
               timeoutInMilliseconds: 30000
          circuitBreaker:
           requestVolumeThreshold: 1000
    ribbon:
     ConnectTimeout: 30000
     ReadTimeout: 30000
    

    之后我们建立一个feign的接口。

    @FeignClient(value = "${server-name.feignDemo}")
    @Component
    public interface IDemoFeign {
    
        @PostMapping("/demo/list")
        public List<Demo> findDemoListByQueryVO(
                @RequestBody DemoFeignQueryVO demoFeignQueryVO);
    
    }
    

    我们通过用$取值的方式来获取服务的名称。接口内的方法必须与服务中的方法的映射一模一样。这里需要注意的问题是参数必须要用@RequestBody或者@RequestParam来接取。
    接下来建立一个controller的类。

    @Component
    public class DemoApi {
    
    	@Autowired
    	private IDemoFeign iDemoFeign ;
    
            public List<Demo> findDemoListByQueryVO(DemoFeignQueryVO demoFeignQueryVO){
                return iDemoFeign .findDemoListByQueryVO(demoFeignQueryVO);
            }
    
    }
    
    

    我们在调用的使用通过controller进行调用,这样,我们以后如果接口有什么问题,可以直接改接口,不用改调用项目的代码。
    最后,我们建立主启动类,在主启动类中,配置我们刚才建立的controller类,这样打成jar包调用的时候,注入一个主启动类,然后就可以调用其他的api。
    主启动类如下:

    @SpringBootApplication
    @EnableFeignClients
    public class ApiAdapter {
    
        public static void main(String[] args) {
            SpringApplication.run(ApiAdapter.class, args);
        }
    
        @Autowired
        public DemoApi demoApi ;
    
    }
    

    我们需要注意的就是需要加上注解@EnableFeignClients。
    实现方案结束,将其打成jar包,引入就可使用。

  • 相关阅读:
    Windows Python+Eclipse环境配置
    infobright系列二:数据迁移
    infobright系列一:源码安装infobright
    autotools归纳
    Atlas系列一:Atlas功能特点FAQ
    C#反射技术概念作用和要点
    .net获取本机公网IP代码
    Java泛型-类型擦除
    现在就使用HTML5的十大原因
    让网页图片变灰色的三种方法
  • 原文地址:https://www.cnblogs.com/jichi/p/11621472.html
Copyright © 2020-2023  润新知