上一篇講述了consul的安裝及簡(jiǎn)單配置,這一次來(lái)說(shuō)一下springcloud中如何使用consul對(duì)服務(wù)進(jìn)行管理
生產(chǎn)者:boot版本是2.0.3
pom文件引入consul依賴
<!-- consul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
在application文件引入consul支持
spring.cloud.consul.host=localhost 本機(jī),推薦每個(gè)機(jī)器都部署一個(gè)consul監(jiān)測(cè)發(fā)現(xiàn)服務(wù)
spring.cloud.consul.port=8500 consul端口
spring.cloud.consul.enabled=true 是否啟用consul服務(wù)
spring.cloud.consul.discovery.enabled=true 是否可以被發(fā)現(xiàn)
spring.cloud.consul.discovery.serviceName=KafkaService 注冊(cè)的服務(wù)名
spring.cloud.consul.discovery.prefer-ip-address=true 是否允許IP顯示
spring.cloud.consul.discovery.heartbeat.enabled=true 是否允許心跳檢測(cè)
spring.cloud.consul.discovery.instance-id=KafkaService-${random.value} 給應(yīng)用附上唯一標(biāo)識(shí),consul集群時(shí)推薦
在主程序中加入服務(wù)發(fā)現(xiàn)支持
//cloud支持
@EnableDiscoveryClient
//事務(wù)支持
@EnableTransactionManagement
@ComponentScan("com.kafka.KafkaBase")
@SpringBootApplication
public class KafkaBaseApplication extends WebMvcConfigurerAdapter{
public static void main(String[] args) {
SpringApplication.run(KafkaBaseApplication.class, args);
}
@Bean
public FilterRegistrationBean httpFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new HttpFilter());
return filterRegistrationBean;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
registry.addInterceptor(new HttpInterceptor()).addPathPatterns("/**");
}
}
在Controller寫(xiě)入測(cè)試接口
@RequestMapping(value = "/param",method = RequestMethod.GET)
public String param(HttpServletRequest request, HttpServletResponse response){
String param = request.getParameter("param");
return "服務(wù)端-測(cè)試參數(shù)"+param;
}
消費(fèi)者:
消費(fèi)者這里我們引入了feign組件,他可以進(jìn)行負(fù)載均衡,幫助用戶把請(qǐng)求平均的分發(fā)到各個(gè)生產(chǎn)者那里。
pom文件引入consul依賴及feign組件
<!-- consul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!-- feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在application文件引入consul支持
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.enabled=true
spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.discovery.serviceName=ConsulConsumer
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.heartbeat.enabled=true
spring.cloud.consul.discovery.register=false
在主程序中加入服務(wù)發(fā)現(xiàn)支持
//cloud支持
@EnableDiscoveryClient
//事務(wù)支持
@EnableTransactionManagement
@SpringBootApplication
@EnableFeignClients
public class KafkaBaseApplication extends WebMvcConfigurerAdapter{
public static void main(String[] args) {
SpringApplication.run(KafkaBaseApplication.class, args);
}
@Bean
public FilterRegistrationBean httpFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new HttpFilter());;
return filterRegistrationBean;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
registry.addInterceptor(new HttpInterceptor()).addPathPatterns("/**");
}
}
在Controller寫(xiě)入測(cè)試接口
@ResponseBody
@RequestMapping(value = "/clientParam", method = RequestMethod.GET)
public String paramname(@RequestParam(value = "param") Integer param) {
return loadBalancer.choose("KafkaService").getUri().toString()+feinClient.paramname(param);
}
至此,一個(gè)簡(jiǎn)單的基于consul的服務(wù)發(fā)現(xiàn)及調(diào)用的例子就寫(xiě)完了。