Ajouter un commentaire

nasix
Je ne reçois pas de message dans ma JMS

Bonjour,

Je suis en train de mettre en œuvre une application basée sur JMS, tout ce passe bien, comme il faut, pas d'erreur, pas d'exception, sauf que le message envoyé par le client producteur, n'est pas reçu pas le deuxième client consommateur.

Voici le code du premier client (Producteur) :

import javax.jms.*;
import javax.naming.*;

public class Producteur {

    public static void main(String[] args) {

        try{

            System.out.println("Démarage de l'application ...");

            Context ctx = new InitialContext();
            System.out.println("Initialiser le contexte ...");

            ConnectionFactory fabrique = (ConnectionFactory)ctx.lookup("MonFournisseur");
            System.out.println("fabrique créée ...");

            Destination destination = (Destination)ctx.lookup("MaFile");
            System.out.println("Destination localisée ...");

            Connection connexion = fabrique.createConnection();
            System.out.println("Connexion établie ...");

            Session session = connexion.createSession(true, Session.AUTO_ACKNOWLEDGE);
            System.out.println("Session créée ...");

            MessageProducer envoi = session.createProducer(destination);
            System.out.println("Producteur créé ...");

            TextMessage message = session.createTextMessage();
            message.setText("Bonjour, je suis un test de message driven");
            envoi.send(message);
            System.out.println("Message envoyé : " +message );
            
            session.close();
            System.out.println("Session fermée ...");

            connexion.close();
            System.out.println("Connexion fermée ...");

        }catch(Exception e){
            System.out.println("erreur : " + e.getMessage());
        }
    }
}

Quand je le lance, j'ai l'affichage suivant :

Quote:

Démarage de l'application ...
Initialiser le contexte ...
fabrique créée ...
Destination localisée ...
Connexion établie ...
Session créée ...
Producteur créé ...
Message envoyé :
Text: Bonjour, je suis un test de message driven
Class: com.sun.messaging.jmq.jmsclient.TextMessageImpl
getJMSMessageID(): ID:41-10.63.44.174(82:c:e7:de:bd:f0)-2989-1244123873356
getJMSTimestamp(): 1244123873356
getJMSCorrelationID(): null
JMSReplyTo: null
JMSDestination: MaFilePhysique
getJMSDeliveryMode(): PERSISTENT
getJMSRedelivered(): false
getJMSType(): null
getJMSExpiration(): 0
getJMSPriority(): 4
Properties: null
Session fermée ...
Connexion fermée ...

Ceci, bien sûr en plus de quelques messages de type info.
et voici le code du deuxième client (Consommateur) :

import javax.jms.*;
import javax.naming.*;

public class Consommateur {

    public static void main(String[] args) {

        try {
            System.out.println("Démarage de l'application ...");

            Context ctx = new InitialContext();
            System.out.println("Initialiser le contexte ...");

            ConnectionFactory fournisseur = (ConnectionFactory) ctx.lookup("MonFournisseur");
            System.out.println("fabrique créée ...");

            Destination destination = (Destination) ctx.lookup("MaFile");
            System.out.println("Destination localisée ...");

            Connection connexion = fournisseur.createConnection();
            System.out.println("Connexion établie ...");
            
            Session session = connexion.createSession(false, Session.AUTO_ACKNOWLEDGE);
            System.out.println("Session créée ...");

            MessageConsumer réception = session.createConsumer(destination);
            System.out.println("Consommateur créé ...");

            connexion.start();
            System.out.println("Connexion lancée ...");

            TextMessage message = (TextMessage) réception.receive();
            System.out.println("Message reçu : " + message);
            
            session.close();
            System.out.println("Session fermée ...");

            connexion.close();
            System.out.println("Connexion fermée ...");

        } catch (NamingException e) {
            System.out.println("Erreur Naming : "+ e.getMessage());
        } catch (JMSException e) {
            System.out.println("Erreur JMS : "+ e.getMessage());
        }
    }
}

Quand je le lance à son tour, il m'affiche :

Quote:

Démarage de l'application ...
Initialiser le contexte ...
fabrique créée ...
Destination localisée ...
Connexion établie ...
Session créée ...
Consommateur créé ...
Connexion lancée ...

Et puis il bloque, je pense qu'il attend un message, mais je ne comprends pas pourquoi il ne le reçoit pas du moment où il a été envoyé avec succès.

Il serait important de pouvoir vérifier s'il est bien envoyé, mais je ne sais pas comment.
Merci pour tout signe et toute aide.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  QQQ     SSS       J   CCC  U   U 
Q Q S J C U U
Q Q SSS J C U U
Q QQ S J J C U U
QQQQ SSSS JJJ CCC UUU
Q