Comment comprendre la messagerie "synchrone" et "asynchronouns" dans JMS?

Après la lecture d'un document de JMS, je suis totalement déconcerté par le membre de phrase synchronous et asynchronouns.

Voir cette page: http://docs.oracle.com/cd/E19798-01/821-1841/bncdq/index.html

Synchrone

Vous utilisez la méthode de réception de consommer un message de façon synchrone.
Vous pouvez utiliser cette méthode à tout moment après l'appel de la méthode start:

connection.start();
Message m = consumer.receive();
connection.start();
Message m = consumer.receive(1000); //time out after a second

De consommer un message de manière asynchrone, vous utilisez un message à l'écoute, décrit dans la section suivante.

Asynchrone

JMS Message Auditeurs
Un auditeur de message est un objet qui agit comme un événement asynchrone gestionnaire de messages. Cet objet implémente l'interface MessageListener, qui contient une méthode onMessage. Dans la méthode onMessage, vous définissez les actions à prendre lorsqu'un message arrive.

Vous vous inscrivez à l'auditeur de message avec un MessageConsumer à l'aide de la setMessageListener méthode. Par exemple, si vous définissez une classe nommée Auditeur qui implémente l'interface MessageListener, vous pouvez enregistrer le message d'écoute comme suit:

Listener myListener = new Listener();
consumer.setMessageListener(myListener);

J'ai deux questions:

  1. Que ce que j'ai compris, la nature de JMS est asynchrone. Producteur publie les messages de la file d'attente/topic, il n'a pas besoin d'attendre des consommateurs. C'est asynchrone comportement. Comment peut-il être "synchrone"?
  2. Si le "mesageListener" est asynchrone, mais dans mon test du printemps jms, je l'ai trouvé toujours en cours d'exécution dans un thread. Cela signifie que, si j'écris Thread.sleep(2000) dans onMessageil faut attendre 2 secondes avant de traiter message suivant. Est-il "asynchrone"?

source d'informationauteur Freewind