找到组织之 Spring 整合 MQ

  • setp 1:添加依赖
    
    
        5.11.2
        4.2.4.RELEASE
        4.12
    

    
        
        
            org.apache.activemq
            activemq-all
            ${activemq.version}
        
        
        
            org.springframework
            spring-jms
            ${spring.version}
        
        
        
            org.springframework
            spring-context-support
            ${spring.version}
        
        
            org.springframework
            spring-test
            ${spring.version}
        
        
        
            junit
            junit
            ${junit.version}
        
    
  • step 2:创建applicationContext.xml



    
    

    
    
        
    

    
    
        
        
    

    
    
        
        
    

    
    
        
            
            spring_queue
        
    

    
    
        
            spring_topic
        
    

spring整合后的连接工厂是包装后的连接工厂,今后若是项目想要替换消息中间件技术如RabbitMqRocketMq,只需要在配置文件中更改连接工厂的实现即可(还有注解信息...)。

  • step 3:创建队列消息生产者
/**
 * 使用spring整合Junit4方式测试代码
 * 避免了测试方法前使用@Before注解手动初始化spring容器
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class Queue_Producer {

    @Resource(name = "jmsTemplate")
    private JmsTemplate jmsTemplate;

    @Resource(name = "activeMQQueue")
    private Queue queue;

    @Test
    public void sendQueueMessage() {
        jmsTemplate.send(queue, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("text five!");
            }
        });
    }
}
  • step 4:创建消息监听类
/**
 * 消息监听器
 */
public class MyMessageListener implements MessageListener {
    public void onMessage(Message message) {
        try {
            TextMessage textMessage = (TextMessage) message;
            System.out.println(textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
  • step 5:在applicationContext.xml中配置监听器bean和监听容器
-------------------在applicationContext.xml中追加以下内容---------------------
    
    

    
    
        
        
        
    

运行生产者类,消息即可被消费。

  • topic 消息生产与消费
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class Topic_Producer {

    @Autowired
    private JmsTemplate jmsTemplate;

    @Autowired
    @Qualifier("activeMQTopic")
    private Topic topic;

    @Test
    public void sendMessage() {
        jmsTemplate.send(topic, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("its a topic message");
            }
        });
    }
}

applicationContext.xml中创建监听容器,监听类为上文的 listener

    
    
        
        
        
    

运行生产者类,消息即可被消费。

spring 整合了 ActiveMq 之后,当 spring 容器初始化时,监听器就会监听连接工厂中定义的 ip 和 端口,一旦生产者将消息发送至服务器,监听器就会获取消息进行消费。

注意:本案例的MyMessageListener类不能定义在Test目录下,否则无法解析该类。

若有疑惑,可能阅读 http://www.jianshu.com/p/1439340d2388 有所帮助。

本文完。

代码地址:https://github.com/Getthrough/ActiveMq_Spring_DemoCode

你可能感兴趣的:(找到组织之 Spring 整合 MQ)