创建module【cloud-consumerzk-order80】

改pm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>cloud2020</artifactId>
  7. <groupId>com.sgy.cloud2020</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>cloud-consumerzk-order80</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.sgy.cloud2020</groupId>
  15. <artifactId>cloud-consumer</artifactId>
  16. <version>${project.version}</version>
  17. </dependency>
  18. <!--springcloud整合zookeeper-->
  19. <dependency>
  20. <groupId>org.springframework.cloud</groupId>
  21. <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.projectlombok</groupId>
  25. <artifactId>lombok</artifactId>
  26. <scope>provided</scope>
  27. </dependency>
  28. </dependencies>
  29. </project>

改主启动类

/**
 * Created by AaronShen on 2020/5/27
 */
@SpringBootApplication
// 服务发现注解
@EnableDiscoveryClient
public class OrderZkMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class,args);
    }
}

改yml

server:
  port: 80

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.200.10:2181
  application:
    name: cloud-consumer-order

controller

创建RestTemplate

/**
 * Created by AaronShen on 2020/5/27
 */
@Configuration
public class ApplicationContextBean {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

能导致服务调用失败

你必须添加@LoadBalanced注解,否则,使用RestTemplate调用服务会失败

创建controller

/**
 * Created by AaronShen on 2020/5/27
 */
@RestController
public class OrderController {
    private final static String PATMENT_URL = "http://cloud-payment-server";

    @Resource
    RestTemplate restTemplate;

    @GetMapping("/consumer/payment/zk")
    public Object order() {
        return restTemplate.getForObject(PATMENT_URL + "/zk",Object.class);
    }
}

测试

启动订单服务

查看zk客户端服务注册情况

可以清晰的看到服务已经注册进zookeeper中了

[zk: localhost:2181(CONNECTED) 25] ls /services
[cloud-consumer-order, cloud-payment-server]

浏览器访问订单服务

1610803428860.png

注意点:

  • 你必须为RestTemplate添加 @LoadBalanced 注解,否则调用失败