Spring Cloud 框架 -- Eureka 服务的注册与消费
服务注册
服务注册就是把一个微服务注册到 Eureka Server 上,这样,当其他服务需要调用该服务时,只需要从 Eureka Server 上查询该服务的信息即可。
这里创建一个 provider ,作为服务提供者,创建项目时,选择 Eureka Client 依赖,这样,当服务创建完成后,简单配置一下,就可以被注册到 Eureka Server 上了:
项目创建好了后,在 application.properties 中配置一下:
# 设置当前服务的名称
spring.application.name=provider
# 设置当前服务的端口号
server.port=1113
# 设置当前服务的注册地址
eureka.client.service-url.defaultZone = http://localhost:1111/eureka
然后,先启动 Eureka Server (Eureka 的搭建参考文章https://www.cnblogs.com/youcoding/p/13238058.html),待服务注册中心启动成功后,再启动 provider 。
随后,再在浏览器中输入 http://localhost:1111,就可以查看 provider 的注册信息,如下图:
服务消费
首先在 provider 中提供一个接口,然后创建一个新的 consumer 项目,消费这个接口;
在 provider 中,提供一个 hello 接口,如下:
@RestController
public class HelloController {
@Value("${server.port}")
Integer port;
@GetMapping("/hello")
public String hello(){
return "hello you!" + port;
}
}
创建一个 consumer 项目,添加 web 和 eureka client 依赖:
创建完成后,我们首先在 application.properties 中配置一下注册信息:
spring.application.name=consumer
# 应用服务 WEB 访问端口
server.port=1116
eureka.client.service-url.defaultZone = http://localhost:1111/eureka
消费者 consumer 的主函数如下:
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
// 创建一个 RestTemplate 实例
// 并开启客户端负载均衡
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
再新建 HelloController 类
,定义一个 hello 接口:
@RestController
public class HelloController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/hello")
public String hello(){
return restTemplate.getForObject("http://PROVIDER/hello", String.class);
//return "hello haha";
}
}
启动 consumer,打开 eureka 后台,查看注册情况:
忽略掉 Hystrix ,可以看到,provider 和 consumer 成功注册到 eureka 之中。
再访问 http://localhost:1116/hello
, 如下图:
如上,就是 eureka 的服务注册与消费。
每天学习一点点,每天进步一点点。