写在前面
搭建eureka服务,并准备将用户模块以及订单模块服务注入到eureka中,访问订单接口时获取下单用户信息。
项目地址 分支:euraka
eureka服务搭建
引入依赖
<dependencies>
<!--eureka服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
yml配置
注意: eureka服务将自己本身注入到服务中
server:
port: 8083
spring:
application:
name: eureka-service
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8083/eureka
Applicatiion添加注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
启动服务后访问效果如下
eureka服务注册
older模块引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
older模块yml配置
server:
port: 8082
application:
name: older-service
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8083/eureka
user模块引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
user模块yml配置
server:
port: 8081
spring:
application:
name: user-service
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8083/eureka
启动服务后访问eureka效果如下
eureka服务发现
RestTemplate负载均衡
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
订单模块调用用户模块接口
调用方式: 服务名+访问路由
@Service
public class OrderService {
@Resource
private OrderMapper orderMapper;
@Resource
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
Order order = orderMapper.findById(orderId);
Long userId = order.getUserId();
String url = "http://user-service/user/"+ userId;
User user = restTemplate.getForObject(url, User.class);
order.setUser(user);
// 4.返回
return order;
}
}