ActiveMQ--Spring配置监听消息

Spring配置监听器监听消息

在Spring里面实现消费者不启动,直接通过配置监听完成。

实现MessageListener接口:

package pers.zhang.spring;

import org.springframework.stereotype.Component;

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

@Component
public class MyMessageListener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        if(null != message && message instanceof TextMessage){
            TextMessage textMessage = (TextMessage) message;
            try {
                System.out.println(textMessage.getText());
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

applicationContext.xml中增加配置:

<!-- 配置监听程序 -->
    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsFactory"/>
        <property name="destination" ref="destinationQueue"/>
        <!-- 自己实现的MessageListener -->
        <property name="messageListener" ref="myMessageListener"/>
    </bean>

生产者:

package pers.zhang.spring;

import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Service;

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

@Service
public class SpringMQ_Produce {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        SpringMQ_Produce produce = (SpringMQ_Produce) ctx.getBean("springMQ_Produce");

        // produce.jmsTemplate.send(new MessageCreator() {
        //     @Override
        //     public Message createMessage(Session session) throws JMSException {
        //         TextMessage textMessage = session.createTextMessage("Spring和ActiveMQ整合消息...");;
        //         return textMessage;
        //     }
        // });

        produce.jmsTemplate.send(session -> {
            return session.createTextMessage("发送给监听器的消息...");
        });

        System.out.println("send task over");
    }
}

运行代码,控制台打印:

send task over
监听器收到:发送给监听器的消息...
发布了641 篇原创文章 · 获赞 1877 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/104057680
今日推荐