1.创建名为feign-consumer spring boot项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>l.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
@SpringBootApplication
@EnableDiscoveryClient
@EnableEurekaClient
@EnableFeignClients
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
@RestController
public class ConsumerController {
@Autowired
HelloService helloService;
@RequestMapping(value = "/feign-consumer", method = RequestMethod.GET)
public String helloConsumer() {
return helloService.helloConsumer();
}
}
//如果是spring管理的对象,需要使用注解否则创建不成功
@Component
public class FallbackTest implements HelloService{
@Override
public String helloConsumer() {
return "baocuo";
}
}
@FeignClient(value="ribbon-consumer",fallback =FallbackTest.class)
public interface HelloService {
@RequestMapping("/ribbon-consumer")
String helloConsumer();
}
ribbon-consumer是服务名
@RequestMapping("/ribbon-consumer")是url
//value="ribbon-consumer服务名,具有Ribbon负载均衡的能力
//allback =FallbackTest.class 具有Hystrix熔断功能
spring.application.name=feign-consumer
server.port=9005
eureka.client.serviceUrl.defaultZone = http://localhost:1111/eureka/
不加这个会报错
ribbon.eureka.enabled=true
Eureka
消费者客户端
Feign客户端