Eureka 整合案例
新建一个Module作为 Eureka注册中心
相关依赖 Eureka Server
创建好后填写配置文件
server:
port: 8761
eureka:
instance:
hostname: eureka-server #eureka 实例的主机名
client:
register-with-eureka: false #不将自己注册到 eureka上
fetch-registry: false #不从eureka上获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka/
随后在Eureka注册中心的运行类中 开启 @EnableEurekaServer
在新建一个Module作为 Provider
相关依赖 Eureka Client
创建好后填写配置文件
server.port=8002
spring.application.name=provider-hello
# 注册服务的时候使用服务的ip地址
eureka.instance.prefer-ip-address=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
再在Provider中进行一个小测试
创建一个服务类 打印helloworld
@Service
public class HelloService {
public String getHello(){
System.out.println("8002");
return "<< Hello World >>";
}
}
再写好响应的controller通过url调用对应的服务类
@RestController
public class ProviderController {
@Autowired
HelloService helloService;
@GetMapping("/hello")
public String getHello(){
return HelloService.getHello();
}
}
那么Provider算是已经写好了
再去写响应的Consumer吧
建立一个Module作为Consumer
相关依赖 Eureka Client
创建好后填写配置文件
spring.application.name=consumer-user
server.port=8200
eureka.instance.prefer-ip-address=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
在 Consumer 的运行类中开启 @EnableDiscoveryClient 注释 开启发现服务功能
再在运行类中写下这一段东西
@LoadBalanced // 使用负载均衡机制
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
等下说
再去写controller
@RestController
public class UserController {
@GetMapping("/buy")
public String buyTicket(String name){
return name ;
}
}
随后问题来了 我们怎么能后接受到provider-hello的中的服务呢
其实就是用到刚才所写的RestTemplate 这样一来就可以继续提供URL 来提取结果了
@RestController
public class UserController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name){
String halo= restTemplate.getForObject("http://PROVIDER-Hello/hello", String.class);
return name + halo;
}
}