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

دمج Spring و JMS

لإعداد دمج Spring مع JMS، تحتاج إلى إنشاء تطبيقين.

تطبيق مستقبل JMS تطبيق Sender JMS

لإعداد تطبيق JMS باستخدام Spring، نستخدم Apache خادم Active MQ إنشاء مجموعة.

لنلتمشق الخطوات البسيطة لإعداد تطبيق Spring المدمج. باستخدام JMS:

ملفات jar المطلوبة

1、تحتاج إلى إضافة Spring core ، Spring misc ، Spring aop ، Spring j2ee و نواة التسجيل المستدامة لـ Spring ملفات jar.

تحميل جميع ملفات jar الخاصة بـ Spring، بما في ذلك aop، mvc، j2ee، remoting، oxm وما إلى ذلك.

2、إضافة activemqall5.9.jar يوجد الملف في مجلد activemq.

لإنشاء صفحة عازلة في خادم ActiveMQ

تحميل Active MQ الخادم تحميل Active MQ

انقر مزدوجًا activemq. bat يوجد الملف في مجلد apache-activemq-5.9.1-bin \ apache-activemq-5.9.1 \ bin \ win64 أو win32.

الآن سيتم فتح واجهة تحكم خادم ActiveMQ.

من خلال http://localhost:8161/admin/لزيارة واجهة التحكم الخاصة بخدمة ActiveMQ.

الآن، انقر على روابط الصفحة، وقم بكتابة في حقل النص myqueue ثم انقر على زر إنشاء


تطبيق مستقبل JMS

نحن سنرى الخطوات البسيطة لربط تطبيق Spring بـ JMS:

MyMessageListener.java TestListener.java applicationContext.xml

1)MyMessageListener.java

حزمة 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

حزمة 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>

تطبيق Sender JMS

دعونا نرى ملفات إنشاء تطبيق Sender JMS:

MyMessageSender.java TestJmsSender.java applicationContext.xml

1)MyMessageListener.java

حزمة com.w3codebox;
استيراد javax.jms.*;
استيراد org.springframework.beans.factory.annotation.Autowired;
استيراد org.springframework.jms.core.JmsTemplate;
استيراد org.springframework.jms.core.MessageCreator;
استيراد 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 {
            الرجاء ارجاع رسالة نصية جديدة باستخدام createTextMessage(message);
        }
    });
}
}

2)TestJmsSender.java

حزمة 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>