Eureka-server是服务注册中心,服务提供方需要将自己的服务在Eureka注册,消费者才能从Eureka消费服务。在这个过程中参与角色有三个:Eureka-Server(服务注册中心)、Spring-Cloud-Provider(服务提供者)、Spring-Cloud-Consumer(服务消费者)
Eureka-Server
Eureka服务依然是上篇文章的案例。
Spring-Cloud-Provider
1 配置文件(依赖的jar包与上案例相同):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
spring.application.name=spring-cloud-provider
server.port=8009
#指向服务注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8008/eureka/
2 提供的服务(编写一个简单的控制类,拦截hello.action请求,返回"Hello World")
@Controller
public class HelloController {
@RequestMapping("/hello.action")
@ResponseBody
public String hello(){
return "Hello World";
}
}
3 在application.class加上@EnableDiscoverClient,添加注解后,项目就具有了服务注册的功能。启动工程后,就可以在注册中心的页面看到spring-cloud-provider服务。
Spring-Cloud-Consumer
1 导入依赖的jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
2 配置文件
spring.application.name=spring-cloud-consumer
server.port=8010
feign.hystrix.enabled=true
eureka.client.serviceUrl.defaultZone=http://localhost:8008/eureka/
3 服务调用接口(调用服务提供方的服务)fallback是调用失败返回指定结果
@Component
@FeignClient(name="spring-cloud-provider",fallback = Fail.class)
public interface HelloService {
@RequestMapping("hello.action")
public String say();
}
4 Fail类代码
public class Fail implements HelloService{
@Override
public String say() {
return "服务调用失败";
}
}
5 在DemoApplication类加上@EnableDiscoveryClient;@EnableFeignClients(调用服务)注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
运行结果:
启动服务输入 http://localhost:8010/haha.action ,输出"Hello World"