一.服务提供者
1、搭建Eureka Client客户端应用,同样使用springcloud的初始化工具,选择Eureka Discovery(除了注册中心全部是客户端)
2、 找到主程序类,贴上相应标签
@SpringBootApplication
@EnableEurekaClient //开启 eureka客户端,也可以使用@EnableDiscoveryClient注解
public class ProducerApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}
}
3、修改配置文件application.yml
server:
port: 8082
spring:
application:
name: provider
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8080/eureka
4、 启动注册中心EurekaServer,再启动Producer,此时访问注册中心地址http:localhost:8080地址,将会看到Instances currently registered with Eureka 项目下已经有一个服务被注册,服务名为:“PRODUCER” ,说明provider已经注册进去
5、 改造我们的项目Producer,让成为服务提供者:在该项目中创建ProvideController
@RestController
public class ProviderController {
@RequestMapping("/provider")
public String providerTest(@RequestParam(value = "name") String name){
return name+"你好,这里是provider";
}
}
二.服务消费者
1、创建服务消费者Consumer项目,创建过程和provider一致!
2、在主程序类上打上@EnableEurekaClient标签,并且注入RestTemplate
@SpringBootApplication
@EnableEurekaClient
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(Consumer1Application.class, args);
}
@Bean
@LoadBalanced //赋予负载均衡的能力,默认是轮询
RestTemplate restTemplate() {
return new RestTemplate();
}
}
3、修改配置 application.yml
server:
port: 8083
spring:
application:
name: consumer
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka
4、 编写ConsummerController ,注入RestTemplate实例,实现和Producer服务的通信
注意:此时才可以通过服务名去调用接口了!!!因为我们赋予了restTemplate负载均衡的能力
@RequestMapping("/consumer")
public String consumerTest(@RequestParam(value = "name") String name){
String forObject = restTemplate.getForObject("http://PROVIDER/provider?name=" + name, String.class);
return forObject;
}
5、 依次启动EurekaServer ,Producer,Consumer ,浏览器输入 http://localhost:8080/consumer?name=andy 返回结果:”andy:你好,这里是provider”
6、 访问 http://localhost:8080/ 你将会看到提供者和消费者服务都已经注册: