随着新版本的eureka不再开源,阿里巴巴的nacos还没有太成熟,相信很多的springcloud新用户在注册中心选型时Consul的机会又多了一些,本人公司就是使用的Consul作为的注册中心。
Consul服务端搭建本文不做介绍。先上一张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格式