Java - JMS : Envoyer 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 producteur JMS en java avec ActiveMQ.
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 Producer qui permet :
  • La création d'une connexion JMS.
  • Envoie d'un message.
  • Fermer la connexion JMS.

/**
 *
 * @author Jihed KAOUECH
 *
 */
public class Producer {

  private String queue;
  private String brokerUrl;

  private ActiveMQConnectionFactory connectionFactory;
  private Session session;
  private Connection connection;

  /**
   * Producer 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);
  }

  /**
   * Send JMS message.
   *
   * @param text
   */
  public void sendMessage(String text) {
    try {
      startConnection();

      // Create the destination (Topic or Queue)
      Destination destination = session.createQueue(queue);
      // Create a MessageProducer from the Session to the Topic or Queue
      MessageProducer producer = session.createProducer(destination);
      // Create a messages
      Message message = session.createTextMessage(text);

      producer.send(message);
      System.out.println("send | message : << " + text + " >> | queue << " 
        + queue + " >> | broker url : << " + brokerUrl + " >> | " + new Date());

      // Clean up
      producer.close();
      closeConnection();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * Create and start connection session with JMS server.
   *
   * @throws JMSException
   */
  private void startConnection() throws JMSException {
    System.out.println("Get Connection from broker << " + brokerUrl + " >>");
    // Create a Connection
    connection = connectionFactory.createConnection();
    connection.start();
    // Create a Session
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    System.out.println("Connection Created with ID << " 
      + connection.getClientID() + " >>");
  }

  /**
   * Close JMS connection.
   *
   * @throws JMSException
   */
  private void closeConnection() throws JMSException {
    session.close();
    connection.close();
    System.out.println("JMS Connection closed");
  }

}

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 {
    Producer producter = new Producer(BROKER_URL, QUEUE);
    producter.sendMessage("hello world");
  }
}

5. Lancer le programme puis allez à la page web du serveur ActiveMQ (par défaut : http://localhost:8161)

6. Se connecter en tant que administrateur et aller à l'onglet queue. Vous devriez avoir une nouvelle queue créer et qui contient un message.


Si vous sélectionnez le message, vous verrez ces informations ainsi que son contenu.
Exemple Complet :

Code source du projet : java-jms-example
Télécharger le projet : java-jms-example.zip

Commentaires