天天看點

SpringCloud使用Consul做服務發現入門

随着新版本的eureka不再開源,阿裡巴巴的nacos還沒有太成熟,相信很多的springcloud新使用者在注冊中心選型時Consul的機會又多了一些,本人公司就是使用的Consul作為的注冊中心。

Consul服務端搭建本文不做介紹。先上一張Consul自帶界面截圖。

SpringCloud使用Consul做服務發現入門

上述product,是注冊中心的一個服,右邊是服務的執行個體資訊,我們将通過服務調用product服務的Api.

項目搭建

版本:

springcloud:Finchley.RELEASE

springboot:2.0.3.RELEASE

pom.xml

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<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-parent</artifactId>
        <version>${springboot.version}</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${springboot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${springboot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${springboot.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<properties>
<springboot.version>2.0.3.RELEASE</springboot.version>
</properties>
           

application.properties

//開啟服務發現
spring.cloud.consul.discovery.enabled=true
//注冊中心資訊
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
//不向注冊中心注冊自己
spring.cloud.service-registry.auto-registration.enabled=false
           

啟動器配置

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

配置RestTemplate

@Configuration
public class Config {

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

}
           

測試用例編寫并運作

@SpringBootTest(classes = Application.class)
@RunWith(SpringRunner.class)
public class TestDemo {

    @Autowired
    private RestTemplate restTemplate;
@Test
    public void test1(){
        String forObject = restTemplate.getForObject("http://product/metrics", String.class);
        System.out.println("=============="+forObject);
    }
}
           

輸出

由于product服務整合了監控系統prometheus,是以輸出的不是Json格式

SpringCloud使用Consul做服務發現入門

繼續閱讀