Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Plateformes réactives et architectures modulaires Java Discussion :

Apache Camel OnExeption


Sujet :

Plateformes réactives et architectures modulaires Java

  1. #1
    Membre du Club
    Apache Camel OnExeption
    Bonjour,

    j'ai différentes routes en Camel, je voudrais que lorsque une exception apparaît le programme puisse router vers une route erreur juste pour afficher l exception.

    J'ai mis au début de mon programme (En DSL).
    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    onException(Exception.class).to(endpoint);


    Que dois je mettre dans ce endpoint ?

    auriez vous une idée ? ou des exemples pour la gestion des exeptions ?!!

    Merci d'avance

  2. #2
    Membre averti
    Tu peux faire ceci :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    onException(Exception.class).log(LoggingLevel.ERROR, "Erreur message")


    Tu as différent constructeur pour log (3 si mes souvenir sont bon ^^ ).

    Maintenant tu veux aussi rediriger vers un autre endpoint (qui peut être une route si tu veux) et dans cet endpoint mettre le log.

  3. #3
    Membre du Club
    Apache Camel OnExeption
    j'ai ajouté un BeanErreur ,

    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    onException(Exception.class).process(new MyFunctionFailureHandler()).stop();


    Voici la définition de MyFunctionFailureHandler.
    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class MyFunctionFailureHandler  implements Processor {
     
    	@Override
    	public void process(Exchange exchange) throws Exception {
    		// TODO Auto-generated method stub
    		 // the caused by exception is stored in a property on the exchange
            Throwable caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
            // here you can do what you want, but Camel regard this exception as handled, and
            // this processor as a failurehandler, so it wont do redeliveries. So this is the
            // end of this route. But if we want to route it somewhere we can just get a
            // producer template and send it.
     
            // send it to our mock endpoint
            exchange.getContext().createProducerTemplate().send("mock:myerror", exchange);
    	}
     
    }


    j'ai crée une exeption de type 0/0 NumberExeption mais rien ne se passe