0

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.

+0

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

Répondre

2

Les replis ne sont pas gérés par Feign lui-même, mais par un disjoncteur. Donc, vous devez mettre Hystrix (ce qui est le disjoncteur Netflix) sur votre classpath et l'activer dans votre fichier application.yml comme ceci:

feign: 
    hystrix: 
    enabled: true 

Si vous utilisez « nuage: démarreur à ressort nuage -openfeign 'dans votre fichier build.gradle ou pom.xml, Hystrix devrait être automatiquement sur votre classpath.

+0

S'il vous plaît ajouter une explication de votre solution (comment il est connecté à la question) – user7294900

+0

Ok, j'ai modifié la réponse – user7346048