Feign&Eureka 实现服务间调用简记

openFeign&Feign

实际上openFeign是Feign的封装,它支持了Spring MVC的相关注解。使用openFeign由原始的对象编程逐渐转向接口编程,代码更加清晰。

首先创建一个父类工程;

父类工程依赖包

Eureka服务创建(eureka-server服务)


Eureka服务依赖包

新增配置YML/properties配置文件


Eureka配置文件

至此Eureka配置完毕,只需要在启动类上增加@EnableEurekaServer注解,启动服务,访问:http://localhost:8716服务,看到Eureka控制面板说明配置成功,接下来配置服务提供模块。

service-feign-services服务提供模块

工程pom.xml配置文件如下:

服务提供模块依赖

配置文件如下:

服务提供模块配置

注意:server. compression. enabled= false 是设置是否压缩传输。这里说明下,当大文件使用feign调用时,针对内部调用又Gzip压缩机制,具体可以去搜索看看 ,大概理解就是像握手协议中互认标志一样。spring. application. name=feign-services,这个是调用哪个服务的身份认证,明确且唯一。

在service-feign-services 该模块下增加微服务标准,这是Application Service要提供的服务的标准,也是Application Client要调用远程服务的标准,通俗点就是一个普通的接口。

GET请求

测试GET请求传递一个普通的参数。 /get?id=xxx

在为Feign定义服务标准接口的时候,处理请求参数的方法参数,必须使用@RequestParam注解描述,并且无论方法参数名和请求参数名是否一致,都需要定义@RequestParam注解的value/name属性

GET请求示例

POST请求

测试使用POST请求传递一个普通参数,Feign技术中,默认的发起POST请求的时候,请求的参数,都是在请求体中使用JSON数据传递的,不是name=value对传递的,所以必须使用@RequestBody注解来解析请求体中的数据,如果使用POST方式发起请求,传递多个普通参数,是使用请求头传递的参数。可以使用@RequestParam注解来处理请求参数,POST请求的请求体类型还是application/json。feign会通过请求头传递多个请求参数: /xxx?a=xxx&b=xxx&c=xxx

POST请求示例

错误示例

使用GET请求传递特殊参数。自定义类型的参数。在Feign发起的默认的请求中,GET请求方式不能传递自定义类型数据。只能通过POST请求传递,如果这种请求,会报如下错误:

feign.FeignException$MethodNotAllowed: status 405 reading IServices#add(FeignTestPOJO)

最后使用一个控制器去实现(implements)以上接口,并在该控制器加上@restController注解。启动即可


service-feign-clients服务消费模块

pom.xml引入service-feign-services包,编写接口文件去继承(extends)Application Service所提供的服务,加上@FeignClient注解,name属性指定需要调用哪个Service所提供的服务,也就是服务互认;

Application Clients

像平时开发代码一样。调用本地的一个service接口。通过service接口远程访问Application Service在该模块启动类中增加两个注解:@EnableFeignClients和@EnableDiscoveryClient,

相关配置:

如果不增加以下配置默认1s要求服务方返回结果,但是在实际开发项目中不可能1秒就返回,需要增加时长。配置如下:

增加请求时长配置

请求方式可以配置请求池的方式连接,高并发请求量一般都是使用请求池的方式进行请求。


测试

编写测试类调用Services服务并启动Clients。

测试类、

我本地Clients服务是8080端口,所以访问地址:http://localhost:8080/getTestFeign,数据正常请求。


请求测试


至此。Feign&Eureka服务间调用编写完毕。能用图说明的干嘛写文字。

你可能感兴趣的:(Feign&Eureka 实现服务间调用简记)