English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Intégration Spring et JMS

Pour intégrer Spring avec JMS, vous devez créer deux applications.

Application récepteur JMS Application Sender JMS

Pour créer une application JMS avec Spring, nous utilisons Apache Serveur Active MQ Créez une file d'attente.

Voyons les étapes simples pour intégrer une application Spring en utilisant JMS :

les fichiers jar nécessaires

1Vous devez ajouter spring core , spring misc , spring aop , spring j2ee et Noyau de persistance Spring fichiers jar.

Téléchargez tous les fichiers jar de Spring, y compris aop, mvc, j2ee, remoting, oxm, etc.

2ajouter activemqall5. 9.jar Le fichier se trouve dans le répertoire activemq.

Créez une file d'attente dans ActiveMQ Server

Téléchargez le serveur Active MQ Télécharger Active MQ

Double-cliquez activemq.bat Le fichier se trouve dans le répertoire apache-activemq-5.9.1-bin \ apache-activemq-5.9.1 \ bin \ win64ou win32dans le répertoire.

Maintenant, la console du serveur ActiveMQ s'ouvrira.

par http://localhost:8161/admin/Pour accéder à la console de gestion du serveur ActiveMQ

Maintenant, cliquez sur Lien de la file d'attenteet écrivez dans le champ de texte myqueue ensuite, cliquez sur le bouton Créer


Application récepteur JMS

Laissons voir les étapes simples pour intégrer une application Spring avec JMS :

MyMessageListener.java TestListener.java applicationContext.xml

1)MyMessageListener.java

package com.w3codebox;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MyMessageListener implements MessageListener{
    @Override
    public void onMessage(Message m) {
        TextMessage message=(TextMessage)m;
        try{
            System.out.println(message.getText());
        }catch (Exception e) {e.printStackTrace(); }
    }
}

2)TestListener.java

package com.w3codebox;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TestListener {
public static void main(String[] args) {
    GenericXmlApplicationContext ctx=new GenericXmlApplicationContext();
    ctx.load("classpath:applicationContext.xml");
    ctx.refresh();
    
    while(true){}
}
}

3)applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jms="http://www.springframework.org/schema/jms"
    
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/jms
    http://www.springframework.org/schema/jms/spring-jms-3.0.xsd">
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"
 p:brokerURL="tcp://localhost:61616" />
<bean id="listener" class="com.w3codebox.MyMessageListener"></bean>
<jms:listener-container container-type="default" connection-factory="connectionFactory"
 acknowledge="auto">
<jms:listener destination="myqueue" ref="listener" method="onMessage"></jms:listener>
</jms:listener-container>
</beans>

Application Sender JMS

Laissons-nous voir les fichiers pour créer une application Sender JMS :

MyMessageSender.java TestJmsSender.java applicationContext.xml

1)MyMessageListener.java

package com.w3codebox;
import javax.jms.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
@Component("messageSender")
public class MyMessageSender {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(final String message){
    jmsTemplate.send(new MessageCreator(){
        @Override
        public Message createMessage(Session session) throws JMSException {
            return session.createTextMessage(message);
        }
    });
}
}

2)TestJmsSender.java

package com.w3codebox;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TestJmsSender {
public static void main(String[] args) {
    GenericXmlApplicationContext ctx=new GenericXmlApplicationContext();
    ctx.load("classpath:applicationContext.xml");
    ctx.refresh();
    
    MyMessageSender sender=ctx.getBean("messageSender",MyMessageSender.class);
    sender.sendMessage("hello jms3");
    
}
}

3)applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jms="http://www.springframework.org/schema/jms"
    
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/jms
    http://www.springframework.org/schema/jms/spring-jms-3.0.xsd">
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"
 p:brokerURL="tcp://localhost:61616" />
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg name="connectionFactory" ref="connectionFactory"></constructor-arg>
<property name="defaultDestinationName" value="myqueue"></property>
</bean>
context:component-scan base-package="com.w3codebox></context:component-scan>
</beans>