走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)
走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)Feignservice-consumermoudlepom.xmlapplication.ymlConsumerExampleApplication.javaFeignExampleService.java启动工程FeignFeign是一个声明式、模板化的HTTP客户端。它使得写Http客户端变..
走进Spring Cloud之五 eureka Feign(服务调用者)(Greenwich版本)
Feign
Feign是一个声明式、模板化的HTTP客户端。它使得写Http客户端变得更简单。使用Feign,只需要用JAX-RS或Spring MVC注解创建可以实现的动态接口。
微服务之间的调用本质还是http请求,如果对于每个请求都需要写请求代码,增加请求参数,同时对请求结果做处理,就会存在大量重复工作,而feign非常优雅的帮助我们解决了这个问题,只需要定义一个interface,fegin就知道http请求的时候参数应该如何设置。
同时,feign也集成了ribbon,只要在微服务中依赖了ribbon,feign默认会使用ribbon定义的负载均衡策略。
最重要的是,feign并不是仅仅只能使用在有eureka或者ribbon的微服务系统中,任何系统中,只要涉及到http调用第三方服务,都可以使用feign,帮我们解决http请求的代码重复编写。
service-consumer
moudle
新建消费者模块
new ->moudle ->service-consumer
pom.xml
修改pom.xml添加spring-cloud-starter-openfeign依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>scexample</artifactId>
<groupId>com.pubutech</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>service-consumer</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml
resource目录下新建application.yml修改配置信息如下:
server:
port: 8080
spring:
application:
name: service-consumer
eureka:
client:
service-url:
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
ConsumerExampleApplication.java
新建SpringBootApplication ConsumerExampleApplication.java
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
//启用服务注册与发现
@EnableDiscoveryClient
//启用feign进行远程调用
@EnableFeignClients
public class ConsumerExampleApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerExampleApplication.class, args);
}
}
FeignExampleService.java
新建FeignClient进行远程服务调用
@FeignClient(value = "service-producer")
public interface FeignExampleService {
@GetMapping("hello")
public String hello(@RequestParam(value = "name") String name);
}
继续新建远程服务调用测试Controller
@RestController
public class ConsumerController {
@Resource
private FeignExampleService feignExampleService;
@GetMapping("/hello/{name}")
public String index(@PathVariable("name") String name) {
return feignExampleService.hello(name);
}
}
启动工程
再次访问 localhost:8761
访问页面http://localhost:8080/hello/jason
调用的结果如下:
更多推荐
所有评论(0)