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

Integrazione Spring e JMS

Per integrare Spring con JMS, è necessario creare due applicazioni.

Applicazione ricevitore JMS Applicazione Sender JMS

Per integrare Spring con JMS, utilizziamo Apache Server Active MQ Creare una coda.

Facciamo un'occhiata ai semplici passaggi per integrare un'applicazione Spring. Utilizzando JMS:

jar file necessari

1、Devi aggiungere Spring core , Spring misc , Spring aop , Spring j2ee e Nucleo di persistenza Spring file jar.

Scarica tutti i file jar di Spring, inclusi aop, mvc, j2ee, remoting, oxm, ecc.

2、Aggiungi activemqall5.9.jar Il file si trova nella directory activemq.

Crea una coda nel server ActiveMQ

Scarica il server Active MQScarica il server Active MQ

Fai doppio clic activemq.bat Il file si trova nella directory apache-activemq-5.9.1-bin \ apache-activemq-5.9.1 \ bin \ win64 o win32.

Ora verrà aperta la console del server ActiveMQ.

attraverso http://localhost:8161/admin/Visita la console di gestione del server ActiveMQ.

Ora, clicca Collegamento alla codae scrivi nel campo di testo myqueue e poi clicca sul pulsante Crea


Applicazione ricevitore JMS

Vediamo i semplici passaggi per integrare l'applicazione 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>

Applicazione Sender JMS

Vediamo quali sono i file per creare un'applicazione 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">
</beans>