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 :

Consumer JMS Synchrone & Webapp


Sujet :

Java EE

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Points : 182
    Points
    182
    Par défaut Consumer JMS Synchrone & Webapp
    Bonjour,

    Voila, j'ai fait plusieurs recherches, mais j'ai pas trop trouvé mon bonheur,

    Je cherche un exemple de consumer JMS en mode synchrone que je souhaite démarrer dans une webapp.

    J'ai vu de tout en mode asynchrone avec onMessage utilisant l'interface MessageListener dans un listener, dans le web.xml, le provider jms appelant la méthode onMessage en multithread. Ce qui ne me va pas.

    J'ai rien sur un mode synchrone, hors il est important que je traite les messages en 1 pour 1 en bloquant les autres, dans l'ordre, en FIFO.

    j'ai vu quelques rare exemple de mécanisme synchrone et l'utilisation du correlationId en pur java , mais pas dans le contexte d'une webapp (J2EE)

    Si quelqu'un à un lien ou un exemple de code, cela me ferait gagner du temps.

    Merci d'avance.
    JP

  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
    Tu entends quoi par synchrone? Que celui qui a posté le message doit ensuite se mettre en attente jusqu'à ce que le message soit traité? C'est généralement ce qu'un entends par synchrone, mais ça ne correspond pas des masses à ta description.

    Si ton problème est de ne traiter qu'un message à la fois, il suffit à ton code de se connecter sur la queue et de traiter chaque message un à un reçu via QueueReceiver.receive()

    Note: oublie les listener, eux ils font tout en parallèle, et si t'as beaucoup de messages qui arrivent, tu peux vite avoir une joyeuse explosion de threads

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Points : 182
    Points
    182
    Par défaut
    Citation Envoyé par tchize_ Voir le message

    Si ton problème est de ne traiter qu'un message à la fois, il suffit à ton code de se connecter sur la queue et de traiter chaque message un à un reçu via QueueReceiver.receive()
    Merci pour votre réponse,

    Je me suis mal exprimé, je sais parfaitement traiter des messages en mode asynchrones via les listener.

    Mais j'ai besoin de traiter en synchrone, les listener ne sont pas fait pour ca.

    je sais comment lire en en synchrone en utilisant la méthode .receive() en me connectant à la queue, mais je ne sais pas comment déployer correctement dans une webapp pour qu'ils soit en ecoute contrairement a l'asyncrhone. en java je n'ai pas de problème.

    J'ai pensé à le lancer au démarrage de la webapp avec
    ServletContextListener dans la methode contextInitialized(), idem à l'arret
    en evitant d'avoir recours à spring.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     |   // create a queue session
        |   QueueSession queueSession = queueConn.createQueueSession(false,
        |       Session.AUTO_ACKNOWLEDGE);
        |                                                                      
        |   // create a queue receiver
        |   QueueReceiver queueReceiver = queueSession.createReceiver(queue);
        |                                                                      
        |   // start the connection
        |   queueConn.start();
        |                                                                      
        |   // receive a message
        |   TextMessage message = (TextMessage) queueReceiver.receive();
        |

  4. #4
    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
    Il n'y a pas d'avance, tu démarrer un thread qui fait le travail. Maintenant, il y a plein de manière de démarrer ce thread, de la plus basique : un start dans le contextInitializef et un stop en fin de context, aux plus complexes: Spring, Quartz, etc.

Discussions similaires

  1. WinAPP WebAPP synchronization
    Par olifile dans le forum Réplications
    Réponses: 2
    Dernier message: 20/04/2011, 13h01
  2. [JBUILDER 9][WEBAPPS] web.xml importé.
    Par proner dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h04
  3. integration de repertoire dans ma webapp
    Par thomy dans le forum JBuilder
    Réponses: 2
    Dernier message: 04/06/2003, 10h34
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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