Obtenir l'exception d'échec dans la méthode de remplacement @HystrixCommand
Est-il un moyen d'obtenir la raison pour laquelle un HystrixCommand
a échoué lors de l'utilisation de la @HystrixCommand
annotation à l'intérieur d'un Printemps de Démarrage de l'application? C'est comme si vous implémentez votre propre HystrixCommand
vous avez accès à la getFailedExecutionException
mais comment pouvez-vous accéder à ce lors de l'utilisation de l'annotation? Je voudrais être capable de faire des choses différentes dans le secours de la méthode basée sur le type d'exception s'est produite. Est-ce possible?
J'ai vu un note sur HystrixRequestContext.initializeContext()
mais la HystrixRequestContext
ne vous donne pas accès à rien, est-il une autre façon d'utiliser ce contexte pour obtenir l'accès aux exceptions?
source d'informationauteur Andrew Serff
Vous devez vous connecter pour publier un commentaire.
Il suffit d'ajouter un Throwable paramètre de secours de la méthode et il recevra l'exception de la commande d'origine produit.
De https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica
Je n'ai pas trouvé un moyen d'obtenir de l'exception avec des Annotations, mais la création de mon propre Commande a fonctionné pour moi:
J'espère que cela aide quelqu'un d'autre.
Je ne pouvais pas trouver un moyen d'obtenir de l'exception avec les annotations, mais j'ai trouvé
HystrixPlugins
, avec qui vous pouvez enregistrer unHystrixCommandExecutionHook
et vous pouvez obtenir le exacte exception comme ceci :L'instance de commande est un
GenericCommand
.La plupart du temps à l'aide de getFailedExecutionException().getMessage() m'a donné les valeurs null.
cela me donne de meilleurs résultats tout le temps.
Comme dit dans la documentation Hystrix-documentation
getFallback()
méthode sera levée lors de l':De sorte que vous pouvez facilement obtenir ce soulevées secours méthode appelée par l'affectation de l'exécution d'exception pour un Throwable objet.
En supposant que votre HystrixCommand retourne une Chaîne de caractères
procédez comme suit:
Plus d'infos ici