1.创建消费者模块
项目工程结构
创建后,已配置好的pom
2. 添加 相关的pojo/service/controller
其中service
@Service
public class ProductService {
@Autowired
ProductClientRibbon productClientRibbon;
public List<Product> listProducts(){
return productClientRibbon.listProdcuts();
}
}
3. 添加 调用其他微服务的类
@Component
public class ProductClientRibbon {
@Autowired
RestTemplate restTemplate;
/**
* 调用 product-data 的products 接口
* @return
*/
public List<Product> listProdcuts() {
return restTemplate.getForObject("http://PRODUCT-DATA-SERVICE/products", List.class);
}
}
关于 RestTemplate 的使用详情,查看:https://blog.csdn.net/lettuce_/article/details/102463992
工程结构
4. 添加properties 属性
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: product-consumer-ribbon
thymeleaf:
cache: false
prefix: classpath:/templates/
suffix: .html
encoding: UTF-8
mode: HTML5
servlet:
content-type: text/html
5. 在启动类中添加2注解
@EnableEurekaClient
@EnableDiscoveryClient
两者基本一致,都可以实现服务发现,也就是能够注册到服务注册中心。
而且在定义@EnableEurekaClient时也要加上@EnableDiscouveryClient这个注解。
两者的区别是
@EnableDiscoveryClient适用面较广,可以用于eureka,也可以用zookeeper、consul
@EnableEurekaClient顾名思义,仅适用eureka
关于 @EnableEurekaClient和@EnableDiscoveryClient的区别
https://blog.csdn.net/u012734441/article/details/78256256?locationNum=1&fps=1
注意: 最新springboot可能有启动类中不添加这两注解也能注册进注册中心(亲测)
.6. 启动
启动后出现启动失败情况:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field restTemplate in cn.how2j.springcloud.productconsumerribbon.config.ProductClientRibbon required a bean of type 'org.springframework.web.client.RestTemplate' that could not be found.
解决:在config目录下添加一个配置类
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
或 添加bean 到启动类中
@LoadBalanced注解
实现springcloud ribbon客户端负载均衡
详情查看:https://blog.csdn.net/xiao_jun_0820/article/details/78917215