JMS&ActiveMQ教程
基于JMS的消息传送
ActiveMQ与Spring集成
ActiveMQ与SpringBoot集成
ActiveMQ安全机制
ActiveMQ主从集群

ActiveMQ与Spring消息接收方式

同步接收

jmsTemplate.receive()

一个线程在工作,没接收到就等待,接收到了就往下执行直到程序结束;

如果想循环不断地接收,那么就写个while true循环。

异步接收

使用监听器监听ActiveMQ目的地,当有消息的时候,回调onMessage方法对消息进行处理,ActiveMQ与Spring集成异步接收消息的步骤如下:

1、创建普通的maven项目,异步接收消息模块12-activemq-spring-receiver-async

2、在pom.xml文件中添加依赖(可以从前面receiver项目中拷贝)

3、配置applicationContext.xml

这里不需要扫描包了,只需要导入jms的配置即可

<import resource="applicationContext-jms.xml"/>

4、配置applicationContext-jms.xml

JmsTemplate只给我们提供了同步接收的方法,所以这里我们不需要对其进行配置。

!-- 配置一个连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置一个sping监听器的容器 -->
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <!--引用连接工厂-->
    <property name="connectionFactory" ref="connectionFactory"/>
    <!--指定监听的目的地-->
    <property name="destinationName" value="springQueue"/>
    <!--监听到消息后,会回调onMessage方法,我们在自定义的监听器中对onMessage方法进行重写,完成消息的接收-->
    <property name="messageListener" ref="myMessageListener" />
</bean>
<!-- 我们自定义的一个消息监听器 -->
<bean id="myMessageListener" class="com.bjpowernode.activemq.listener.MyMessageListener" />

5、创建自定义监听器,实现MessageListener接口,并在实现的onMessage方法中接收消息

ublic class MyMessageListener implements MessageListener{
    public void onMessage(Message message) {
        if(message instanceof TextMessage){
            try {
                String text = ((TextMessage) message).getText();
                System.out.println("监听器异步接收到的消息为:" + text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

6、编写测试类Test进行测试

public class Test {
    public static void main(String[] args) {
        //这里只需要启动Spring容器,就会创建监听器对象
        new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    }
}

7、运行测试

程序启动后,会一直处于监听状态,坚挺到消息,会对其进行处理。

全部教程