34、微服务注册中心Consul

1、安装Consul 服务器 ,在win10下安装,进入官网下载zip 解压之后得到 consul.exe文件,进入安装目录下打开cmd终端输入命令:consul agent -dev  

2、将服务提供者注册到consul注册中心

创建cloud-provider-consul-payment8006 项目,添加pom依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

编写application.yml

server:
  port: 8006

spring:
  application:
    name: cloud-consul-payment-service
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

编写主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentApplication8006 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentApplication8006.class,args);
    }
}

编写业务类controller

@RestController
@RequestMapping(value = "/payment")
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/consul")
    public String paymentInfo() {
        return "springcloud with consul serverPort: " + serverPort + UUID.randomUUID().toString();
    }
}

启动项目查看:localhost:8500 注册中心是否有服务提供者的注册信息

版本测试:http://localhost:8006/payment/consul

3、将服务消费者注册到consul注册中心

创建cloud-consumerconsul-order80 消费者服务,添加pom依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

编写application.yml配置文件

server:
  port: 80

spring:
  application:
    name: cloud-order-consul-service
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

创建主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulApplication80 {

    public static void main(String[] args) {
        SpringApplication.run(OrderConsulApplication80.class,args);
    }
}

编写RestTenplate配置类注入到容器中

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate () {
        return new RestTemplate();
    }
}

编写业务类controller

@RestController
@Slf4j
@RequestMapping(value = "/consumer")
public class OrderConsulController {

    private static final String REST_URL = "http://cloud-consul-payment-service";
    @Resource
    private RestTemplate restTemplate;

    @GetMapping(value = "/payment/consul")
    public String paymentInfo() {
        String result = restTemplate.getForObject(REST_URL + "/payment/consul", String.class);
        return result;
    }
}

查看consul注册中心是否有服务消费者的注册信息

本地测试:http://localhost/consumer/payment/consul

posted @ 2021-06-29 01:52  shunnWcs  阅读(61)  评论(0)    收藏  举报