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
领取专属 10元无门槛券
私享最新 技术干货