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

Integración de Spring y JMS

Para integrar Spring con JMS, debe crear dos aplicaciones.

Aplicación receptora JMS Aplicación del emisor JMS

Para crear una aplicación JMS con Spring, usamos Apache Servidor Active MQ Cree una cola.

Vamos a ver los pasos sencillos para integrar una aplicación de Spring. Usando JMS:

archivos jar necesarios

1、debe agregar spring core , spring misc , spring aop , spring j2ee y Núcleo de persistencia de Spring archivos jar.

Descargue todos los archivos jar de Spring, incluyendo aop, mvc, j2ee, remoting, oxm, etc.

2、agregar activemqall5. 9.jar El archivo se encuentra en el directorio activemq.

Cree una cola en el servidor ActiveMQ

Descargue el servidor Active MQ Descargue el servidor Active MQ

Doble clic activemq.bat El archivo se encuentra en apache-activemq-5.9.1-bin \ apache-activemq-5.9.1 \ bin \ win64o win32en el directorio.

Ahora se abrirá la consola del servidor ActiveMQ.

a través de http://localhost:8161/admin/Visite la consola de administración del servidor ActiveMQ.

Ahora, haga clic Enlace de colaescriba en el campo de texto myqueue después de lo cual haga clic en el botón Crear


Aplicación receptora JMS

Vamos ver los pasos sencillos para integrar una aplicación de Spring con 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>

Aplicación del emisor JMS

Vamos a ver el archivo para crear la aplicación del emisor 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>