SpringCloud集成Consul使用


       Consul是一套开源的分布式服务发现和配置管理系统,有HashiCorp公司用go语言开发。提供了微服务系统的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格。

       它具有很多优点。包括:基于raft协议,比较简洁;支持健康检查。同时支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供图形界面,跨平台,支持Linux、Mac、Windows。

安装并运行Consul

1,官网下载

2,执行cmd命令,弹出命令行窗口。找到consul的目录包。

3,使用开发模式启动

 4,使用http://localhost:8500访问。

 支付模块

1,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-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
    </dependencies>

2,YML文件

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

3,主启动类

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

4,控制层

@RestController
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/payment/consul")
    public String paymentConsul(){
        return "consul port:"+serverPort+"\t"+ UUID.randomUUID().toString();
    }
}

订单模块

1,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-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
    </dependencies>

2,YML文件

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

3,主启动类

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

4,配置文件

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

5,控制层

@RestController
public class OrderController {
    private final String url="http://consul-payment-service";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/consume/payment")
    public String paymentConsul(){
        return restTemplate.getForObject(url+"/payment/consul",String.class);
    }
}

可以通过http://localhost:83/consume/payment访问。

Consul图形界面

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM