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