javax.jms.MessageConsumer se bloque à recevoir lors de la consommation fermé

Selon la javadoc, si je l'appelle à recevoir() sur un javax.jms.MessageConsumer il permet de bloquer indéfiniment jusqu'à ce qu'un message est produit ou jusqu'à ce que le message de consommation est fermé.

J'ai un thread dans lequel un receive() est appelée. Dans le cadre de l'arrêt thread, je fais appel à close(), mais le consommateur, bloque en recevoir() et de sorte que le fil ne sera pas de l'arrêt. L'essentiel de mon code est:

public String receiveMessage() {
...
...
   System.out.println("About to receive")
   TextMessage message = (TextMessage) consumer.receive();
   System.out.println("No longer receiving")
...
...
}

public void stop() {
    try {
        if (consumer != null) {
            consumer.close();
        }
    } catch (JMSException ex) {
        throw new IllegalStateException(ex);
    }
}

Dans le débogueur je peux les voir de plus près() est appelée, mais les recevoir encore des blocs. Si j'utilise la méthode receive() avec un délai d'attente seront bloquées jusqu'à l'expiration de ce délai.

Tout semble bonne pour moi, j'espère que quelqu'un peut me dire ce que je fais de mal.

JMS est notoirement spécifiques à l'implémentation sous-jacente. Il serait utile si vous l'avez dit vous qui vous ont été à l'aide.
Merci pour votre réponse. C'est IBM MQ 7.0.0.2
receiveNoWait

OriginalL'auteur DaveRlz | 2011-11-04