【发布时间】:2021-08-29 09:27:37
【问题描述】:
我想将 Eureka 客户端与 spring-cloud-starter-loadbalancer 一起使用。但是当我添加配置时,我得到了错误。当我删除 @LoadBalancerClient(name = "mail-service", configuration = LoadBalancerConfiguration.class) 和 LoadBalancerConfiguration 类配置时,它工作正常。我试过这段代码:
@FeignClient(name = "mail-service")
@LoadBalancerClient(name = "mail-service", configuration = LoadBalancerConfiguration.class)
public interface EmailClient {
@RequestMapping(method = RequestMethod.POST, value = "/engine/emails/register")
void setUserRegistration(CreateUserDTO createUserDTO);
}
@Configuration
public class LoadBalancerConfiguration {
@Bean
public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier(ConfigurableApplicationContext context) {
return ServiceInstanceListSupplier.builder()
.withBlockingDiscoveryClient()
.withSameInstancePreference()
.withHealthChecks()
.build(context);
}
}
application.yml:
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
loggerLevel: basic
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
fetchRegistry: true
healthcheck:
enabled: true
instance:
preferIpAddress: true
leaseRenewalIntervalInSeconds: 10
POM.xml 依赖项
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>com.netflix.eureka</groupId>
<artifactId>eureka-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
当我只有一个目标服务时出现此错误。
[503] during [POST] to [http://mail-service/engine/emails/register] [EmailClient#setUserRegistration(CreateUserDTO)]: [Load balancer does not contain an instance for the service mail-service]
我使用 Release Train 版本:2020.0.3
你知道可能是什么问题吗?
【问题讨论】:
-
从 LoadBalancerConfiguration 中移除 @Configuration
-
我删除了它,但我遇到了同样的问题。
-
我删除了
.withHealthChecks(),现在它可以工作了。也许配置丢失或这是一个错误? -
很遗憾问题没有解决。如果我以相反的顺序或随机顺序启动 Web 服务,则不会传播有关主机的数据。知道如何解决这个问题吗?
标签: spring spring-cloud netflix-eureka spring-cloud-loadbalancer