首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring War包部署无法注册到Consul的解决方案

Spring项目一般都会使用Netflix的全家桶,服务注册发现(Eureka),中断器(Hystrix),路由(Zuul),负载均衡(Ribbon)。为了让多语言(比如:Golang)的服务可以共用服务注册发现,所以这里选择了Consul,Spring Cloud官方也提供了与Consul的集成。

添加依赖

添加Consul的配置文件

如果你是maven项目请在resource根下添加配置文件 ,当然你也可以尝试在 中添加配置:

注解开启服务注册与发现

启动后在Spring的日志中会打印服务注册的信息:

这是使用Spring Boot 内嵌Tomcat的方式启动并注册到Consul,如果打成war包放到独立的Tomcat时注册就会失败,以下会给出解决方案。

War包解决服务注册失败的方法

Spring-Consul已经有相关的issue,参考链接在文章最后Consul(#302),虽然issue还没有关闭,但是回复中已经给出相应的解决方案,通过控制注册到Consul的生命周期并设置 启动的端口号来完成注册,确切的来讲应该是注册时不能设置服务的启动端口导致的注册失败。以下是代码实现:

启动后日志与Spring Boot启动注册相同,到此War包部署服务注册的问题就解决了,以下是参考链接 :

https://cloud.spring.io/spring-cloud-consul/

https://github.com/spring-cloud/spring-cloud-consul/issues/302

https://github.com/spring-cloud/spring-cloud-consul/issues/302#issuecomment-342340582

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180106G0DL5R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券