Bei der Verwendung von Nacos + openfeign in Spring Cloud ist ein Fehler aufgetreten. Kein Feign-Client für LoadBalancing definiert. Haben Sie es vergessen?

Kürzlich trat bei der Verwendung von Nacos + openfeign im Spring-Boot-Projekt der Fehler „Kein Feign-Client für LoadBalancing definiert. Haben Sie vergessen, spring-cloud-starter-loadbalancer einzubinden“ auf.

Heute werde ich Ihnen mitteilen, wie ich diesen Fehler behoben habe. Es tritt normalerweise auf, wenn OpenFeign zum Durchführen eines Dienstaufrufs verwendet wird, und weist darauf hin, dass die Spring-Cloud-Starter-Loadbalancer-Abhängigkeit fehlt. Im Folgenden werde ich eine konkrete Lösung geben.

Zunächst muss die Ursache dieses Fehlers geklärt werden. Standardmäßig verwendet OpenFeign Ribbon als Load Balancer. In der neuesten Spring Cloud-Version (Version 2.2 und höher) ist Ribbon jedoch veraltet und Spring Cloud empfiehlt die Verwendung eines neuen Load Balancers – Spring Cloud LoadBalancer. Wenn wir OpenFeign in Kombination mit Nacos verwenden, um Serviceaufrufe durchzuführen, müssen wir daher entsprechende Abhängigkeiten hinzufügen.

Hier sind die Schritte zur Behebung dieses Problems:

Schritt 1: Fügen Sie die Spring Cloud LoadBalancer-Abhängigkeit in der Datei pom.xml hinzu

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

Schritt 2: Ändern Sie den Load Balancer von FeignClient

Fügen Sie Anmerkungen zu Ihren OpenFeign-Schnittstellen hinzu  @LoadBalancer . Beispiele hierfür sind:

@FeignClient(name = "service-provider")
@LoadBalancer
public interface ServiceProviderFeignClient {
    // your feign client methods
}

Schritt 3: Stellen Sie sicher, dass die Parameter für den Lastausgleich in der Nacos-Konfigurationsdatei konfiguriert sind

In der Konfigurationsdatei von Nacos (normalerweise application.properties oder application.yml) muss die folgende Konfiguration hinzugefügt werden:

# 启用 Nacos 的负载均衡规则
ribbon.NacosDiscoveryEnabled=true

# 开启 Nacos 的权重规则(可选)
ribbon.NacosServerWeightEnabled=true

Nachdem Sie die oben genannten Schritte ausgeführt, Ihr Projekt neu kompiliert und gestartet haben, sollte die Fehlermeldung „Kein Feign-Client für LoadBalancing definiert. Haben Sie vergessen, spring-cloud-starter-loadbalancer einzubinden“ verschwinden.

рекомендация

отblog.csdn.net/liuqingup/article/details/131624545