IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Java EE Discussion :

[Camel] Méthode wireTap dépréciée


Sujet :

Java EE

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut [Camel] Méthode wireTap dépréciée
    Bonjour.

    j'ai une route camel dans laquelle j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    interceptFrom()
    .wireTap("jms:journal", true, constant(""))
    Or cette méthode est dépréciée.
    Dans la doc Camel rien n'est dit sur le fait qu'elle soit dépréciée.

    Dans le code source, seul le fait qu'elle soit dépréciée est indiqué avec le fait qu'elle disparaît en version 3.

    Je ne trouve pas de solution de remplacement.
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    interceptFrom()
    .wireTap("direct:journal");
     
    from("direct:journal")
    .setBody("")
    .to("jms:journal");
    je crée un cycle infernal
    le est intercepté par l'intercepteur qui crée une copie qu'il envoie sur le même from.

    Je ne peux pas utiliser un broadcast vu que je suis dans un intercepteur je ne connais pas l'élément suivant.

    Et si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    interceptFrom()
    .wireTap("jms:journal")
    j'envoie dans mon journal tous les messages avec leur body et chez moi l'unité pour compter les échanges et le million. Intercepter les messages pour analyser les leaders afin d'avoir un suivi de l'activité a posteriori est jouable. Mais intercepter les messages entiers va inévitablement saturer la file du jms du journal.

    Si quelqu'un a une solution ou une piste je suis preneur.

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    bonjour à tous.
    avec un peu d'imagination je suis arrivé à la solution.

    mais e qui s'écrivait simplement devient très compliqué à écrire
    je l'ai dans une classe parente donc c'est pas trop lourd.

    fonctionnalité à reproduire
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    interceptFrom()
        .wireTap("jms:journal", true, constant("")) // deprecated
    en clair envoyer une copie des headers dans des messages entrant de toutes les routes dans le journal.
    La solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    interceptFrom()
        .when(header("identifiant.unique.journal").isNull())
            .setHeader("identifiant.unique.journal", constant("reception"))
    	.wireTap("direct:journal")
            .removeHeader("identifiant.unique.journal");
     
    from("direct:journal").setBody(constant("")).to("jms:journal");
    On intercept les message qui n'ont pas le header "identifiant.unique.journal"
    on leur met le header "identifiant.unique.journal"
    on fait une copie vers le chanel "direct:journal" et on leur retire le header "identifiant.unique.journal" pour que si une autre route récupère le message elle puisse l'intercepter à l'entrée.

    les message entrant dans "direct:journal" ayant l'entête il ne seront pas intercepté la route from("direct:journal") peut donc fonctionner sans créer de boucle.

    fort de ce principe j'ai mis en place ma journalisation dans la classe mère.
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    interceptFrom()
      .when(header("identifiant.unique.journal").isNull())
        .setHeader("identifiant.unique.journal", constant("reception"))
        .wireTap("direct:journal")
        .removeHeader("identifiant.unique.journal")
        .bean(AphpMessageLogger.class, "traceDebutRoute")
    ;
     
    onCompletion()
      .onCompleteOnly()
        .choice()
          .when(header("identifiant.unique.journal").isNull())
          .setHeader("identifiant.unique.journal", constant("Echange OK"))
          .wireTap("direct:journal")
          .removeHeader("identifiant.unique.journal")
        .end()
    ;
    onCompletion()
      .onFailureOnly()
        .choice()
          .when(header("identifiant.unique.journal").isNull())
          .setHeader("identifiant.unique.journal", constant("Echange KO"))
          .wireTap("direct:journal")
          .removeHeader("identifiant.unique.journal")
        .end()
    ;
     
    // on envoie dans la file de journalisation uniquement les headers du messages.
    from("direct:journal").setBody(constant("")).to("jms:journal");
    A+JYT

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour

    Je reviens sur ce post car à force de creuser la doc j'ai trouvé la bonne solution
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    interceptFrom()
        .wireTap("jms:journal", true, constant("")) // deprecated
    il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nterceptFrom()
        .wireTap("jms:journal")
            .newExchangeBody(constant(""))
        .end()
    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2007] Migration sharepoint 2003 vers 2007, méthode dépréciée
    Par miles_ dans le forum SharePoint
    Réponses: 6
    Dernier message: 31/03/2011, 19h50
  2. Méthode dépréciée ?
    Par Invité(e) dans le forum Langage
    Réponses: 4
    Dernier message: 11/06/2008, 10h34
  3. Réponses: 4
    Dernier message: 02/07/2007, 19h27
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 15h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 09h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo