Schritt

Oben haben wir über die Annotation @SentinelResource von Sentinel und die Behandlung der Ausnahmelösung gesprochen.

Wenn jede Schnittstelle separat verarbeitet wird, ist dies unpraktisch, sodass wir openfeign integrieren können, um die aktuelle Begrenzungs- und Herabstufungsstrategie auf einheitliche Weise zu bewältigen.

Schritt 1: Aktivieren Sie die Unterstützung von Feign für Sentinel

feign:
  sentinel:
    enabled: true

Schritt 2: Schreiben Sie einen Endergebnisplan

import com.ossa.feign.api.producer.ProducerFeign;
import org.springframework.stereotype.Service;

/**
 * @author issavior
 */

@Service
public class ProducerFeignFallback implements ProducerFeign {
    @Override
    public String producerById(String id) {
        String msg = "fallback限流方法";
        return id + msg;
    }
}

Schritt 3: Ändern Sie die Annotation @FeignClient

import com.ossa.feign.config.FeignClientConfig;
import com.ossa.feign.fallback.ProducerFeignFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @author issavior
 */

@FeignClient(value = "ossa-service-producer", configuration = FeignClientConfig.class,fallback = ProducerFeignFallback.class)
public interface ProducerFeign 
{

    /**
     * 根据ID查询商品
     *
     * @param id 商品的主键ID
     * @return 相关商品的信息
     */

    @GetMapping(value = "/producer/{id}")
    String producerById(@PathVariable("id") String id);

}

Frage

Problembeschreibung:

Verursacht durch: java.lang.IllegalStateException: Mehrdeutige ZuordnungBild

analysieren:

Die Verwendung der @RequestMapping-Anmerkung in der Schein-Schnittstelle führt zu diesem Problem.

Der Controller, eine Anforderung der Steuerungsschicht, bildet zwei Methoden ab und wird im Controller wiederholt, sodass ein Fehler gemeldet wird. Mit anderen Worten, wenn es in einem Projekt zwei @RequestMapping("/xxx") gibt, die genau gleich sind, wird eine java.lang.IllegalStateException gemeldet, und das Modul, in dem sich der Controller befindet, hängt von dem Modul ab, in dem sich der Client befindet befindet, um einen Konflikt zu verursachen.

Lösung:

Entfernen Sie @RequestMapping

Bild