Si vous intégrez votre logique dans un try/catch et relancez toutes les exceptions dans une exception HystrixBadRequestException, cela ne déclenchera pas le repli.
@Override
protected Object run() throws Exception {
try {
return //call goes here
}
catch (Throwable e) {
//We wrap any exceptions in a HystrixBadRequestException because this way any other errors will not
//trip the short circuit
throw new HystrixBadRequestException("Exception thrown hystrix call", e);
}
}
De la documentation: http://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/exception/HystrixBadRequestException.html
Une exception représentant une erreur avec des arguments fournis ou état plutôt qu'un échec d'exécution. Contrairement à toutes les autres exceptions lancées par un HystrixCommand, cela ne déclenche pas de repli, ne compte pas dans les métriques de défaillance et ne déclenche donc pas le disjoncteur.
REMARQUE: ceci ne doit être utilisé que lorsqu'une erreur est due à une entrée utilisateur telle que IllegalArgumentException, sinon cela annule l'objectif de tolérance aux pannes et de comportement de repli.
Selon ce que je crois comprendre. À l'intérieur de la méthode ignoreexceptions de HystrixCommandBuilder, il ne fait que copier la liste des exceptions. Mais selon le commentaire de la méthode, j'ai compris que ces exceptions ignorées peuvent être enveloppées dans Hystrixbadrequestexception. Mais pouvez-vous me dire comment faire cela et aussi d'une meilleure façon avec un extrait de code – LazyGuy
"juste définir cette propriété dans la commande" - il n'y a pas de telle propriété dans 'HystrixCommand' –