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

API standards et tierces Java Discussion :

[JMS] Récuperer message


Sujet :

API standards et tierces Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut [JMS] Récuperer message
    Bonjour,

    Je développe une application et je souhaite que mon consommateur de message écoute en permanence pour la réception des message:
    J'avais fait ceci sauf que je trouve cela moche une boucle infini. Avez-vous une autre solutions?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			while(true){
    				Message messageReçu = consumer.receive();
    				this.onMessage(messageReçu);
    			}
    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Faire un message driven bean ?

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je connait pas du tout

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Ne fait surtout pas de while(true) et n'utilise pas receive(), les profs vont te tuer, ils attendent de toi que tu utilises les fonctionnalités asynchrones de JMS.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Justement j'ai essayer ceci mais il se passe rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			MessageConsumer receiver = session.createConsumer(destination);
    			receiver.setMessageListener(this);
    Ma classe implements MessageListener
    Sa me détecte pas l'arrivé d'un nouveau message, il faut que je relance mon application or c'est pas ce que je veux

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par totot Voir le message
    Je connait pas du tout
    c'est bête comme tout à faire, pour autant que tu utiliser un serveur javaEE. Il te suffit de créer un bean qui implémente MessageListener et de lui mettre l'annotation MessageDriven, il sera appelé dès arrivée d'un message.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @MessageDriven(mappedName="jms/Queue") // queue à écouter
    public class SimpleMessageBean implements MessageListener {
        @Resource // si tu en as besoin
        private MessageDrivenContext mdc;
        public void onMessage(Message inMessage) {
          //action
        }
    http://docs.oracle.com/javaee/6/tutorial/doc/bnbpo.html

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Et si je veux l'utiliser dans des application qui utilise pas J2ee

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    dans ce cas, si tu es sur une application standalone, et que tu n'utilise pas de filtre, une boucle avec un receive est selon moi tout à fait acceptable. Avec quelques adaptations:

    Utiliser la méthode receive prenant un "timeout" en argument, pour ne pas dormir indéfiniment.
    Vérifier dans chaque tour de boucle que l'on a pas demandé au thread de s'arrêter.

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Mais si je met un timeout, il va pas écouter en parmanence

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par totot Voir le message
    Mais si je met un timeout, il va pas écouter en parmanence
    Et en quoi ce serait un problème? Ton code n'écoute pas en permance, il arrête l'écoute pour traiter un message puis reprends l'écoute là où il s'est arrêter. Je propose d'ajouter un timeout pour pouvoir éventuellement arrêter le programme proprement.

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Pardons, je voulais dire que je souhaite pas qu'il s'arrête d'écouté

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est pour ça que tu met l'appel dans une boucle, pour qu'il reprenne après tes check d'arrêt...

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je fait un while(true) ?

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    plutot un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while (! mustStop){
    }

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

Discussions similaires

  1. [VB.net] Pop récuperer message du Mail
    Par kevin01330 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 09/09/2013, 17h04
  2. Impossible de se connecter à une queue JMS + jboss messaging
    Par redsonic dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 16/03/2009, 23h22
  3. Récupere message oracle
    Par msahmi dans le forum ASP.NET
    Réponses: 5
    Dernier message: 28/03/2008, 11h50

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