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 Zuordnung
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
