1.创建一个user的服务
客户端创建参见spring-cloud简单使用系列之Eureka
2. 在product服务中增加测试接口
package com.dbl.springcloudclientproductserver;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
/**
* descrription:测试类
* <p>
* Create by DbL on 2020/12/8 0008 22:25
*/
@RestController
public class ProductService {
@Value("${server.port}")
String port;
@GetMapping("/product/{id}")
public String findById(@PathVariable("id") int id) {
// 返回端口信息 观察负载均衡效果
return port + "-success:" + id;
}
}
3.user服务中调用product服务接口
package com.dbl.springclouduserservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* descrription:
* <p>
* Create by DbL on 2020/12/8 0008 22:44
*/
@RestController
public class TestController {
@Autowired
RestTemplate restTemplate;
@Bean
@LoadBalanced // 通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
public RestTemplate restTemplate() {
return new RestTemplate();
}
@GetMapping("/product/{id}")
public String queryProductInfo(@PathVariable("id") int id) {
// 根据名字取获得服务提供者的信息
return restTemplate.getForObject("http://spring-cloud-product-server/product/" + id, String.class);
}
}
4.启动测试
启动两个product服务与user服务
启动成功后如图所示:
idea中勾选下图所示Allow parallel 修改端口后就可以重复启动同一个项目
调用测试接口,可以发现轮流调用注册的两个服务