Spring 之JMS消息推送
更新:HHH   时间:2023-1-7


<!--Spring配置部分-->
    <!--创建连接工厂 -->
    <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://192.168.1.13:61616"></property>
    </bean>
    <!-- 声明ActiveMQ消息目标,目标可以是一个队列,也可以是一个主题ActiveMQTopic -->
    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="TransferIno"></constructor-arg>
    </bean>
    <!--定义模板--->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory"></property>
        <property name="defaultDestination" ref="destination"></property>
        <property name="receiveTimeout" value="600"></property>
    </bean>
    <!--发送-->
    <bean id="sender" class="com.xbkj.springactivemq2.Sender">
        <property name="jmsTemplate" ref="jmsTemplate"></property>

    </bean>
    <!--接受-->
    <bean id="receiver" class="com.xbkj.springactivemq2.Receiver">
        <property name="jmsTemplate" ref="jmsTemplate"></property>
    </bean>
    
    
//JAVA部分        
package com.xbkj.springactivemq2;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ScheduledMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
//发送
public class Sender {

    private JmsTemplate jmsTemplate;

    private String info;

    public JmsTemplate getJmsTemplate() {
        return jmsTemplate;
    }

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public void sendInfo() {
        System.out.println("info:"+info);
        if (info != null && !"".equals(info)){
            jmsTemplate.send(new MessageCreator() {
                public Message createMessage(Session session)throws JMSException {
                    TextMessage message = session.createTextMessage(info);
                    long delayTime = 3000;
                    message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delayTime);
                    return message;
                }

            });
        }
        
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public String getInfo() {
        return info;
    }

}

package com.xbkj.springactivemq2;

import javax.jms.JMSException;
import javax.jms.TextMessage;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.JmsUtils;
//接收
public class Receiver {

    private JmsTemplate jmsTemplate;

    public JmsTemplate getJmsTemplate() {
        return jmsTemplate;
    }

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    /**
     * 构造函数
     */
    public Receiver3() {
    }

    public String receiveMessage() {
        String my = "";
        TextMessage message = (TextMessage) jmsTemplate.receive();
        try {
            my = message.getText();
        } catch (JMSException e) {
            throw JmsUtils.convertJmsAccessException(e);
        }
        return my;
    }
}


//单元测试
package com.xbkj.service.test;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.xbkj.springactivemq2.Receiver3;
import com.xbkj.springactivemq2.Sender3;

public class MessageTest {

        private ApplicationContext context;

        @Before
        public void init() {
            context = new ClassPathXmlApplicationContext("applicationContext.xml");
        }
        
        @Test
        public void testMessageSender(){ 
            Sender3 sender3 =(Sender3)context.getBean("sender3");
            int state =4;
            if(state ==4){
                sender3.setInfo("test1");
                sender3.sendInfo();
            }
            Receiver3 receiver3= (Receiver3) context.getBean("receiver3");
            System.out.println(receiver3.receiveMessage());
            
        }
        


    
}
返回开发技术教程...