SpringCloud(Hoxton)--Consul服务注册与发现

柔光的暖阳◎ 2021-08-27 12:35 579阅读 0赞

cloud-providerconsul-payment8006模拟支付模块

依赖:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <parent>
  4. <artifactId>cloud2020</artifactId>
  5. <groupId>pers.zhang.springcloud</groupId>
  6. <version>1.0-SNAPSHOT</version>
  7. </parent>
  8. <modelVersion>4.0.0</modelVersion>
  9. <artifactId>cloud-providerconsul-payment8006</artifactId>
  10. <dependencies>
  11. <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
  12. <dependency>
  13. <groupId>pers.zhang.springcloud</groupId>
  14. <artifactId>cloud-api-commons</artifactId>
  15. <version>${project.version}</version>
  16. </dependency>
  17. <!--SpringCloud consul-server -->
  18. <dependency>
  19. <groupId>org.springframework.cloud</groupId>
  20. <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  21. </dependency>
  22. <!-- SpringBoot整合Web组件 -->
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-web</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-actuator</artifactId>
  30. </dependency>
  31. <!--日常通用jar包配置-->
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-devtools</artifactId>
  35. <scope>runtime</scope>
  36. <optional>true</optional>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.projectlombok</groupId>
  40. <artifactId>lombok</artifactId>
  41. <optional>true</optional>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-starter-test</artifactId>
  46. <scope>test</scope>
  47. </dependency>
  48. <dependency>
  49. <groupId>cn.hutool</groupId>
  50. <artifactId>hutool-all</artifactId>
  51. <version>RELEASE</version>
  52. <scope>test</scope>
  53. </dependency>
  54. <dependency>
  55. <groupId>cn.hutool</groupId>
  56. <artifactId>hutool-all</artifactId>
  57. <version>RELEASE</version>
  58. <scope>test</scope>
  59. </dependency>
  60. </dependencies>
  61. </project>

配置:application.yml

  1. server:
  2. port: 8006
  3. spring:
  4. application:
  5. name: consul-provider-payment
  6. #consul注册中心
  7. cloud:
  8. consul:
  9. host: localhost
  10. port: 8500
  11. discovery:
  12. service-name: ${ spring.application.name}

Controller:

  1. @RestController
  2. @Slf4j
  3. public class PaymentController {
  4. @Value("${server.port}")
  5. private String serverPort;
  6. @RequestMapping(value = "/payment/consul")
  7. public String paymentConsul(){
  8. return "springcloud with consul" + serverPort + "\t" + UUID.randomUUID().toString();
  9. }
  10. }

启动类:

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class PaymentMain8006 {
  4. public static void main(String[] args) {
  5. SpringApplication.run(PaymentMain8006.class, args);
  6. }
  7. }

cloud-consumerconsul-order80模拟订单模块

依赖:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <parent>
  4. <artifactId>cloud2020</artifactId>
  5. <groupId>pers.zhang.springcloud</groupId>
  6. <version>1.0-SNAPSHOT</version>
  7. </parent>
  8. <modelVersion>4.0.0</modelVersion>
  9. <artifactId>cloud-consumerconsul-order80</artifactId>
  10. <dependencies>
  11. <!--SpringCloud consul-server -->
  12. <dependency>
  13. <groupId>org.springframework.cloud</groupId>
  14. <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  15. </dependency>
  16. <!-- SpringBoot整合Web组件 -->
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-web</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-actuator</artifactId>
  24. </dependency>
  25. <!--日常通用jar包配置-->
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-devtools</artifactId>
  29. <scope>runtime</scope>
  30. <optional>true</optional>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.projectlombok</groupId>
  34. <artifactId>lombok</artifactId>
  35. <optional>true</optional>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-test</artifactId>
  40. <scope>test</scope>
  41. </dependency>
  42. </dependencies>
  43. </project>

配置:
application.yml

  1. server:
  2. port: 80
  3. spring:
  4. application:
  5. name: cloud-consumer-order
  6. #consul注册中心
  7. cloud:
  8. consul:
  9. host: localhost
  10. port: 8500
  11. discovery:
  12. service-name: ${ spring.application.name}

RestTemplate:

  1. @Configuration
  2. public class ApplicationContextConfig {
  3. @Bean
  4. @LoadBalanced
  5. public RestTemplate getRestTemplate(){
  6. return new RestTemplate();
  7. }
  8. }

Controller:

  1. @RestController
  2. @Slf4j
  3. public class OrderConsulController {
  4. private static final String INVOKE_URL = "http://consul-provider-payment";
  5. @Resource
  6. RestTemplate restTemplate;
  7. @GetMapping("/consumer/payment/consul")
  8. public String paymentInfo(){
  9. String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);
  10. return result;
  11. }
  12. }

启动类:

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class OrderConsulMain80 {
  4. public static void main(String[] args) {
  5. SpringApplication.run(OrderConsulMain80.class, args);
  6. }
  7. }

测试

启动consul,再启动两个微服务:

访问:localhost:8500
在这里插入图片描述

访问:localhost/consumer/payment/consul
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,579人围观)

还没有评论,来说两句吧...

相关阅读

    相关 服务注册发现

    在分布式系统中,各个子系统都是多个实例存在,这个时候必须要引入一个服务协调器,用于给调用方提供可用的调用提供者的命名消息。 服务协调器,如zookeeper,etcd,eu

    相关 服务注册发现---eureka

    eureka简介:云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。 话不多说直接上代码 首先新建一个springcloud eu