一、创建买票工程做案例
1)、创建三个项目consumer-user(消费者)、eureka-server(注册中心)、provider-ticket(生产者)
2)、目录结构如下:
二、配置案例需要的环境
环境一:eureka-server(注册中心)相关
1)、所需jar
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2)、全局环境配置
server:
port: 8761
eureka:
instance:
hostname: eureka-server #eureka实例的主机名
client:
register-with-eureka: false #不注册本身到Eureka注册中心
fetch-registry: false #不从Eureka注册中心获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka/
3)、启动访问
环境二:provider-ticket(生产者)相关
1)、所需jar
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2)、全局环境配置
#启动端口
server:
port: 8001
#项目名称
spring:
application:
name: provider-ticket
#eureka配置
eureka:
instance:
prefer-ip-address: true #使用服务的id地址注册
client:
service-url:
defaultZone: http://localhost:8761/eureka/
3)、启动项目,访问注册中心查看是否注册成功
环境三:consumer-user(消费者)相关
1)、所需jar跟生产者一样
2)、全局环境配置
server:
port: 8002
spring:
application:
name: consumer-user
eureka:
instance:
prefer-ip-address: true #使用服务的id地址注册
client:
service-url:
defaultZone: http://localhost:8761/eureka/
3)、启动项目,访问注册中心看是否注册成功
三、案例相关代码
1)、eureka-server(注册中心)开启Eureka服务
启动类:
@EnableEurekaServer//启用Eureka服务
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
2)、 provider-ticket(生产者)
service类:
@Service
public class TicketService {
public String getTicket(){
return "《绿皮书》";
}
}
controller类:
@RestController
public class TicketController {
@Autowired
TicketService ticketService;
@GetMapping("/ticket")
public String getTicket(){
return ticketService.getTicket();
}
}
3)、 consumer-user(消费者)
注入远程访问模板类:
@Bean
@LoadBalanced//启用负载均衡机制
public RestTemplate restTemplate(){
return new RestTemplate();
}
controller类:
@RestController
public class UserController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name){
String template = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);
return name+"购买了"+template;
}
}
四、访问购票接口验证是否整合成功