RestTemplate的使用
在你要使用远程调用的项目模块启动类下面写上
让这个远程调用模板注册到Spring容器里面
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
业务层写
@Autowired
private RestTemplate restTemplate;
就可以调用get或者post方法了
get就是getforboj那么post就是postobj
试例
使用之前user里面是null,使用RestTemplate远程调用查询,返回数据
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2. 创造http请求url
String url = "http://localhost:8081/user/"+order.getUserId();
// 3.发送请求并且转换格式
User user = restTemplate.getForObject(url, User.class);
// 4.返回
order.setUser(user);
return order;
}
Eureka注册中心是什么
什么是服务者什么是消费者
服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
消费者也可以是提供者,提供者也会是消费者。
上面RestTemplate出现的问题
服务消费者该如何获取服务提供者的地址信息?
如果有多个服务提供者,消费者该如何选择?
消费者如何得知服务提供者的健康状态?
那么就该使用像Eureka注册中心这样的注册中心解决了
Eureka注册中心的作用
其实就是帮忙管理服务接口,监控接口是否健康
官方一点的话语:
Eureka的使用
搭建注册中心Eureka注册中心
新建模块
因为Eureka需要一个自己的模块来运行
所以在你cloud项目下面在新建一个子项目
在子项目导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
启动类
加上 @EnableEurekaServer打开Eureka
配置文件
server:
port: 10086
spring:
application:
name: lanlandaimaren #服务名称 你自己想怎么取名怎么取
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka/ #eureka服务地址,端口是你上面设置的
启动项目
直接访问你到端口:http://localhost:10086/
注册user-service 注册服务
在你要添加的服务模块下面添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
spring:
application:
name:userservice #服务名字 同上
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka/ #地址同上
这样就注册上了服务
服务发现
之前的方法
这个是上面使用的方法那么现在要干什么,讲localhost替换成服务名如:
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2. 创造http请求url
String url = "http://userservice/user/" +order.getUserId();
// 3.发送请求并且转换格式
User user = restTemplate.getForObject(url, User.class);
// 4.返回
order.setUser(user);
return order;
}
效果一样
Ribbon负载均衡
这样RestTemplate和Eureka的使用就结束了。