淘先锋技术网

首页 1 2 3 4 5 6 7

一、创建买票工程做案例

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;
    }
}

  四、访问购票接口验证是否整合成功