Java - JMS : Consommer un message
JMS, acronyme de Java Messaging Service, est une API qui permet d'envoyer et de recevoir des messages de manière asynchrone entre applications ou composants Java.
Dans ce tutorial on va créer un consommateur JMS en java avec ActiveMQ.
REF :
Créer un projet Maven avec eclipse
Java - JMS : Envoyer un message
REF :
Créer un projet Maven avec eclipse
Java - JMS : Envoyer un message
1 . Créer un projet maven
2 . Ajouter la dépendence d'activeMQ
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.14.5</version>
</dependency>
</dependencies>
|
3 . Créer la classe Consumer qui permet :
- La création d'une connexion JMS.
- Rester à l'écoute de la queue JMS et afficher les messages reçus.
/**
*
* @author Jihed KAOUECH
*
*/
public class Consumer {
private String queue;
private String brokerUrl;
private ActiveMQConnectionFactory connectionFactory;
private Session session;
private Connection connection;
/**
* Consumer constructor.
*
* @param brokerUrl : JMS broker URL
* @param queue : JMS queue
*/
public Producer(String brokerUrl, String queue) {
this.queue = queue;
this.brokerUrl = brokerUrl;
// Create a ConnectionFactory
connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
}
/**
*
Read JMS Message
*/
public void run() {
try {
System.out.println(Thread.currentThread().getName()
+ " | Get Connection from broker << " + brokerUrl + " >>") ;
// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();
String clientID = connection.getClientID();
System.out.println(Thread.currentThread().getName()
+ " | Connection Created with ID << " + clientID + " >>") ;
// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue(queue);
// Create a MessageConsumer from the Session to the Topic or
Queue
MessageConsumer consumer = session.createConsumer(destination);
while (true) {
// Wait for a message
Message message = consumer.receive();
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
System.out.println(Thread.currentThread().getName()
+ " | Receive JMS | text = " + text );
} else {
System.out.println(Thread.currentThread().getName()
+ " | message: " + message);
}
}
} catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
}
|
4. Créer une classe de test.
public class Application {
private final static String BROKER_URL = "tcp://localhost:61616";
private final static String QUEUE = "request_queue";
public static void main(String[] args) throws JMSException {
Consumer consumer = new Consumer(BROKER_URL, QUEUE);
consumer.run();
}
}
|
5. Lancer le programme.
6. Si un message est envoyé dans la queue, le programme affiche :
pool-1-thread-1 | Get Connection from broker <<
tcp://localhost:61616 >>
pool-1-thread-1 | Connection Created with ID <<
ID:52909-1507589789658-0:1 >>
|
6. Si un message est envoyé dans la queue, le programme affiche :
pool-1-thread-1 | Receive JMS | text = hello world
|
Exemple Complet :
Code source du projet : java-jms-example
Télécharger le projet : java-jms-example.zip
Commentaires
Enregistrer un commentaire