目录
上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用的案例。案例中有三个角色:服务注册中心、服务提供者、服务消费者,其中服务注册中心就是我们上一篇的eureka单机版启动既可,流程是首先启动注册中心,服务提供者生产服务并注册到服务中心中,消费者从服务中心中获取服务并执行。
实例
服务端
(1)添加依赖
<!-- 注册中心:客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)配置文件
spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
(3)启动类添加@EnableDiscoveryClient
(4)controller
@RestController
public class HelloController {
private final Logger logger = LoggerFactory.getLogger(HelloController.class);
@RequestMapping("/hello")
public String index(@RequestParam String name) {
return "hello "+name+",this is first messge";
}
}
客户端
(1)添加依赖
<!-- 注册中心:客户端 -->
<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>
(2)配置文件
spring.application.name=spring-cloud-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
#用于远程调用的熔断
feign.hystrix.enabled=true
(3)启动类添加
@EnableDiscoveryClient//启用服务注册与发现
@EnableFeignClients//启用feign进行远程调用
(4)interface
@FeignClient(name= "spring-cloud-producer",fallback = HelloRemoteHystrix.class)
public interface HelloRemote {
@RequestMapping(value = "/hello")
public String hello(@RequestParam(value = "name") String name);
}
(5)controller
@RestController
public class ConsumerController {
@Autowired
HelloRemote HelloRemote;
@RequestMapping("/hello/{name}")
public String index(@PathVariable("name") String name) {
return HelloRemote.hello(name);
}
}
测试
集群
修改spring-cloud-producer
配置文件
spring.application.name=spring-cloud-producer
server.port=9004
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
controller
@RequestMapping("/hello")
public String index(@RequestParam String name) {
return "hello "+name+",this is producer 2 send first messge";
}
部署spring-cloud-producer,访问http://localhost:9001/hello/fdfd,效果交替返回。可以实现负载均衡功能