spring cloud - consul服務(wù)注冊(cè)及發(fā)現(xiàn)

上一篇講述了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ě)完了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容