前言

最近在做微服务的项目,各个系统之间需要进行调用,然后用一个适配器来实现服务之间的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包,引入就可使用。

SpringCloud中Feign的适配器的实现方案的更多相关文章

  1. springcloud中Feign配置详解

    Spring Cloud中Feign配置详解 到目前为止,小伙伴们对Feign的使用已经掌握的差不多了,我们在前文也提到Feign是对Ribbon和Hystrix的整合,那么在Feign中,我们要如何 ...

  2. SpringCloud 中 Feign 调用使用总结

    最近做微服务架构的项目,在用 feign 来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录. 以下通过分为三种情况说 ...

  3. springcloud中feign接值问题

    很多时候使用feign都接收不到传过来的数据,一般情况如下! 如果是基本数据类型的话,使用@RequestParam @RequestMapping(value = "/selectDeta ...

  4. 解决SpringCloud使用Feign跨服调用时header请求头中的信息丢失

    在使用SpringCloud进行Feign跨服调用时header请求头中的信息会丢失,是因为Feign是不会带上当前请求的Cookie信息和头信息的,这个时候就需要重写请求拦截. 1.需要重写Requ ...

  5. springCloud中的服务调用feign

    springCloud中的服务调用(要在调用端写) 前提进行了服务注册 流程: 1.在服务模块中添加依赖 <!--服务调用--> <dependency> <groupI ...

  6. 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!

    Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也是 ...

  7. SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer);

    SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 第一种方法: 如果你 ...

  8. SpringCloud 在Feign上使用Hystrix(断路由)

    SpringCloud  在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...

  9. SpringCloud(5)---Feign服务调用

    SpringCloud(5)---Feign服务调用 上一篇写了通过Ribbon进行服务调用,这篇其它都一样,唯一不一样的就是通过Feign进行服务调用. 注册中心和商品微服务不变,和上篇博客一样,具 ...

随机推荐

  1. OCR (光学字符识别技术)安装

    一.安装homebrew 1)打开终端直接输入安装命令:     /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.c ...

  2. Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置

    说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 <plugin> <groupId>com.spot ...

  3. MySql全文检索使用详解

    实际项目中经常会有一个字段存储多个值用逗号分隔的场景,当分开查询的时候,使用模糊查询会非常影响效率.mysql提供了全文检索函数可以有效解决这一问题: 1.数据结构 ID CODE MSG 1 111 ...

  4. Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法

    最近无法通过SSH连接Linux服务器,访问该服务器上的HTTP服务也出现异常.可以ping,但是telnet端口超时,网站wget超时,访问超时. 最后排查是内核配置问题 原来是 net.ipv4. ...

  5. 基于HTML的购物车模型的代码设计

    HTML代码 <html lang="en"> <head> <meta charset="UTF-8"> ​ ​ < ...

  6. 记录一次创建.net core 项目 并且发布到docekr【完全新手入门】

    1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker:  Docker for Windows  2]创建.net core项目并且发布 2.0先打开并且运行 ...

  7. AI-Azure上的认知服务之Computer Vision(计算机视觉)

    使用 Azure 的计算机视觉服务,开发人员可以访问用于处理图像并返回信息的高级算法. 主要包含如下高级算法: 标记视觉特性Tag visual features 检测对象Detect objects ...

  8. Android 基于ksoap2的webservice请求的学习

    [学习阶段] WebService网络请求? 其实我也是第一次遇到,之所以有这个需要是因为一些与 ERP 相关的业务,需要用到这样的一个请求方式. 开始学习WebService ①当然是百度搜索,这里 ...

  9. 我也开源... React Native Messager

    近期有空,玩转React Native. https://github.com/andyc365/ReactNativeMessager React Native Messager A React N ...

  10. CentOS 7 离线环境安装nginx时报错:./configure: error: C compiler cc is not found

    先说解决方法: 在nginx目录下,查看objs/autoconf.err文件,该文件记录了具体的错误信息 vi objs/autoconf.err 一般就是缺少一些文件,因为我的gcc.g++也是离 ...