J'essaie d'implémenter la solution de repli en utilisant le client Feign mais sans succès.Son code le plus simple Veuillez trouver ci-dessous.La méthode de repli n'est pas appelée quand l'appel de repos est échoué en utilisant feign client
Principale
@SpringBootApplication
@EnableDiscoveryClient
@RestController
@EnableFeignClients
public class EurekaClient1Application {
@Autowired
public DiscoveryClient discoveryClient;
public static void main(String[] args) {
SpringApplication.run(EurekaClient1Application.class, args);
}
@Autowired
FeingInterface feingInterface;
@GetMapping("/hi/{name}")
public String test(@PathVariable String name)
{
String h = feingInterface.test(name);
return h;
}
}
interface Feindre
@FeignClient(name="client22",fallback=FallBack.class)
public interface FeingInterface {
@GetMapping("/hiname/{name}")
public String test(@PathVariable("name") String name);
}
classe fallback
@Component
class FallBack implements FeingInterface{
@Override
public String test(String name) {
// TODO Auto-generated method stub
return "fall back methord being called";
}
}
Obtenir erreur dans le client reste, mais pas de méthode fallback
"timestamp": 1501950134118, "statut": 500, "erreur": "Internal Server Error", "exception": "java.lang.RuntimeException", "message": « com.netflix.client .ClientException: équilibreur de charge ne pas serveur disponible pour le client: client22" ,
pour obtenir le message de la méthode de secours je suis passé client22 eureka id qui est pas là dans le serveur eureka. J'ai statuer-feindre en pom. Quelqu'un peut-il regarder dans cela.
J'ai trouvé un problème git lié à ceci qui dit que "l'interface annotée @FeignClient avec le bean de secours ne peut pas être autofilée car ce n'est pas un bean unique" et ce problème est maintenant fermé, maintenant @FeignClient est maintenant un bean primaire (https://github.com/spring-cloud/spring-cloud-netflix/issues/899). Mais dans ce cas, ce qui me manque ne trouve pas. – rocky