Spring Boot开发Zuul遇连接拒绝错误,添加Eureka配置后解决,求解析
让我拆解一下每个配置的作用,以及它们如何帮你搞定这个Connection refused的问题:
首先,默认情况下Spring Cloud Zuul是和Eureka服务发现深度集成的——它会自动尝试连接Eureka服务器,完成服务注册和注册表拉取的操作。如果你还没搭建自己的Eureka服务器,Zuul会默认去连本地的Eureka实例(通常是localhost:8761),但这个地址根本没运行Eureka服务,自然就会抛出连接被拒绝的错误。
你添加的三个配置正好关闭了这些默认的Eureka客户端行为:
eureka.client.registerWithEureka=false:这个配置禁用了当前Zuul服务向Eureka服务器注册自己的行为。默认情况下Spring Cloud应用启动时会自动把自己注册到Eureka,没有可用的Eureka服务器时,这个注册请求就会失败,触发连接错误。关掉它之后,Zuul就不会发起注册请求了。eureka.client.fetchRegistry=false:这个配置禁止Zuul从Eureka服务器拉取服务注册表。Zuul作为API网关,默认会依赖Eureka的服务列表做路由转发,没有Eureka服务器时,拉取注册表的请求会被拒绝,导致异常。关闭这个配置后,Zuul就不会再尝试去获取注册表了。eureka.client.server.waitTimeInMsWhenSyncEmpty=0:这个配置把Eureka客户端发现注册表为空时的等待时间设为0,避免了启动时因为等待注册表同步产生的阻塞和额外连接尝试,进一步消除了触发连接错误的可能,同时还加快了Zuul的启动速度。
总的来说,这些配置让Zuul不再依赖Eureka服务发现,刚好匹配你现在只开发Zuul基础功能、没搭Eureka集群的场景,所以添加之后连接拒绝的错误就立刻消失了。
内容的提问来源于stack exchange,提问作者Jeff Cook

