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

Plateformes réactives et architectures modulaires Java Discussion :

[Camel / ServiceMix / JMS / ActiveMQ] Gestion de files


Sujet :

Plateformes réactives et architectures modulaires Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut [Camel / ServiceMix / JMS / ActiveMQ] Gestion de files
    Bonjour,

    Dans le cadre d'un projet universitaire, je suis chargée de la mise en place d'un composant d'orchestration des messages JMS entre 2 applications.

    L'idée est la suivante :
    - Mon composant est démarré, il est à l’écoute de la file 'File_Source'
    plusieurs messages arrivent simultanément sur cette dernière. Chaque message peut représenter 3 types d'événements (incident, position, événement) et il peut être critique ou non critique.
    - Mon composant doit filtrer les messages selon leurs types et les prioriser selon l’état.
    - J'ai une seule file source, et 3 files destinataires (File_evt, File_inc, File_pos).

    J'ai réussi à faire fonctionner une simple route (from to) mais sans passer par le Bean car pour ce dernier mon ServiceMix n'arrive plus à le reconnaitre.

    Merci pour votre aide.

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je ne sais pas comment tu code xml ou java
    en java il te faut passer par un routeur

    dans ta classe routeBuilder dans la méthode configure tu définit ta route ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from("monUrlFrom")
    .bean(MaClasseRouteur.class)
    .recipientList(header("RouteDestination"));
    tu définis la classe MaClasseRouteur.class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MaClasseRouteur {
     
      public void route (Exchange exchange) {
        Message msg = exchange.getIn();
        //ton code pour décider vers où envoyer le message
        msg.setHeader("RouteDestination", "urlDeDestinationCalculee");
      }
     
    }
    si tu utilise spring ou blueprint la route est semblable mais il faut passer l'id du bean à utiliser dans l'attribut du tag

    et surtout définir le bean dans spring ou blueprint

    perso j'utilise un route builder java
    et donc dans le xml je mets simplement
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/blueprint"
           xsi:schemaLocation="
           http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
           http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
      <bean id="routeBuilder" class="foo.RouteBuilder" />
      <camelContext id="ng484-hegp-out" trace="false" xmlns="http://camel.apache.org/schema/blueprint">
        <routeBuilder ref="routeBuilder" />
      </camelContext>
    </blueprint>

    A+JYT

  3. #3
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut
    Bonjour,
    je vous remercie pour votre réponse,
    Moi je code en Java DSL, du coup , j'aimerais bien savoir, si dans la methode exchange, je peux préciser que par exemple
    if(obj instanceof Events)
    {
    Queue destination = 'File_evt'

    }
    else if (..... Position)
    {
    Queue destination="File-dest"
    }
    .....

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    dans la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MaClasseRouteur {
     
      public void route (Exchange exchange) {
        Message msg = exchange.getIn();
        //ton code pour décider vers où envoyer le message
        msg.setHeader("RouteDestination", "urlDeDestinationCalculee");
      }
     
    }
    tu peux mettre ce que tu veux
    getIn() te retourne un objet message qui est le message reçu en entré.

    le corps du message et l'objet reçu tu peux donc vérifier ce que tu veux dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MaClasseRouteur {
     
      public void route (Exchange exchange) {
        Message msg = exchange.getIn();
        Object obj = msg.getBody();
        if(obj instanceof Events) {
          msg.setHeader("RouteDestination", "jms:File_evt");
        } else if (..... Position) {
          msg.setHeader("RouteDestination", "jms:File-dest");
        }
      }
     
    }
    le recipientlist de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from("monUrlFrom")
    .bean(MaClasseRouteur.class)
    .recipientList(header("RouteDestination"));
    va envoyer ton message dans la file jms File_evt ou dans la file jms File-dest
    A+JYT

  5. #5
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut
    Bonjour,
    Ca marche impeccable le filtrage pour moi, je vous remercie infiniment pour votre aide, du coup, j'aimerais bien savoir, pour servicemix, comment faire pour qu'il reconnaisse mon bean, ou est ce que je dois mettre mes classe java ???
    dans le dossier bin??
    Merci pour votre aide

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    non c'est dans le fichier bleuprint.xml ou Spring.xml

    il faut faire
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!-- instancier le bean et lui associer un id -->
    <bean id="myBean" class="org.apache.camel.spring.bind.ExampleBean"/>
     
    <camelContext xmlns="http://camel.apache.org/schema/spring">
      <route>
        <from uri="direct:start"/>
        <!-- utiliser le bean dans la route --> 
        <to uri="myBean"/>
        <!--ou encore -->
        <to uri="bean:myBean" />
        <to uri="mock:results"/>
      </route>
    </camelContext>

    A+JYT

  7. #7
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut
    oui, mais à votre avis, la fichier physique (Monbean.java), je le laisse dans mon workspace ???? ne faut pas-il le mettre quelque part sous servicemix???

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    il faut packager le projet contenant la route et le bean dans un un bundle (jar)
    le plus simple est d'utiliser maven et l'archetype camel-archetype-blueprint

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mvn archetype:generate \
      -DarchetypeGroupId=org.apache.camel.archetypes \
      -DarchetypeArtifactId=camel-archetype-blueprint \
      -DarchetypeVersion=2.9.0 \
      -DarchetypeRepository=https://repository.apache.org/content/groups/snapshots-group
    cela va te créer un projet qui contient tout ce qu'il faut
    le xml de la route est à placer dans le fichier blueprint.xml
    et le java dans src/main/java

    ensuite quand tu as tous développé tu te place dans le dossier du projet et tu faitça crée le jar qui va bien tu n'a plus qu'à le déposer dans deploy
    A+JYT

  9. #9
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Par défaut
    Du coup, je crois qu'il faut ajouter quelque chose spécifique dans le pom.xml, n'est ce pas ?????

Discussions similaires

  1. gestion de files
    Par rems033 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/08/2007, 15h20
  2. [socket] Gestion de file
    Par sylk974 dans le forum Développement
    Réponses: 1
    Dernier message: 09/03/2007, 17h33
  3. [Log4j][JMS] exporter logs vers files JMS ?
    Par goldandlink dans le forum Logging
    Réponses: 2
    Dernier message: 27/12/2006, 17h16
  4. Gestion de files d'attente
    Par bounnitcharaf dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/09/2006, 18h34

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