ActiveMQ整合spring实战讲解

ActiveMQ整合spring实战讲解

  • ActiveMQ安装
    • ActiveMQ后台介绍
  • ActiveMQ整合spring配置
    • pom.xml配置:
    • spring配置
    • 定义一个生产者
    • 定义一个消费者
    • 编写测试类测试配置是否成功
    • 运行测试方法

ActiveMQ安装

windows环境:

  1. 将安装包解压至任意安装目录;ActiveMQ整合spring实战讲解_第1张图片

  2. 选择符合本机位数的activemq.bat,双击启动;ActiveMQ整合spring实战讲解_第2张图片
    ActiveMQ整合spring实战讲解_第3张图片

  3. 弹出如下dos窗口,表示activemq服务已启动;ActiveMQ整合spring实战讲解_第4张图片
    Linux环境:

  4. 把安装包上传至linux服务器,apache-activemq-5.12.0-bin.tar.gz

  5. 解压安装包,tar zxf apache-activemq-5.12.0-bin.tar.gz

  6. 启动activemqlinux安装activemq步骤1
    activemq服务启动后,在浏览器中访问localhost:8161,点击“Manage ActiveMQ broker”,账号密码都为admin;
    ActiveMQ整合spring实战讲解_第5张图片
    看到如下界面,表示安装成功;
    ActiveMQ整合spring实战讲解_第6张图片

ActiveMQ后台介绍

点击queues可查看消息详情。
ActiveMQ整合spring实战讲解_第7张图片
ActiveMQ整合spring实战讲解_第8张图片
Number Of Pending Messages 等待消费的消息,这个是当前未出队列的数量。可以理解为总接收数-总出队列数;
Number Of Consumers 消费者,这个是消费者端的消费者数量;
Messages Enqueued 进入队列的消息,进入队列的总数量,包括出队列的。 这个数量只增不减;
Messages Dequeued 出了队列的消息,可以理解为是消费这消费掉的数量。

ActiveMQ整合spring配置

pom.xml配置:


  4.0.0
  cn.itcast.maven
  activeMQ_spring
  0.0.1-SNAPSHOT
  war
  activeMQ_spring
  
  	
  		junit
  		junit
  		4.12
  	
  	
  		org.springframework
  		spring-core
  		4.1.7.RELEASE
  	
  	
  		org.springframework
  		spring-jms
  		4.1.7.RELEASE
  	
  	
  		org.apache.activemq
  		activemq-all
  		5.2.0
  	
  	
  		org.springframework
  		spring-test
  		4.1.7.RELEASE
  	
	
			org.apache.xbean
			xbean-spring
			4.2
	
  
  
  	
  		
  			org.apache.maven.plugins
  			maven-compiler-plugin
  			3.1
  			
  			 1.7
  			 1.7
  			 utf-8
  			
  		
  	
  

spring配置

配置文件目录结构如图:
ActiveMQ整合spring实战讲解_第9张图片
applicationContext-mq.xml配置文件内容如下:



	
	
	
	
	
    
    
  
    
    	
    	
    	
    

    
      
    
          
        
        
        
        
        
    
    
     

    
    
          
        
        
        
    

    

    
    
    
    
        
    
    

定义一个生产者

包目录结构如下:
ActiveMQ整合spring实战讲解_第10张图片
QueueSender.java:

package cn.itcast.activemq.producer.queue;
import java.util.Map;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;

/**
 * 
 * @description 队列消息生产者,发送消息到队列
 * 
 */
@Component("queueSender")
public class QueueSender {

			@Autowired
			@Qualifier("jmsQueueTemplate")
			private JmsTemplate jmsTemplate;// 通过@Qualifier修饰符来注入对应的bean
		
			/**
			 * 发送一条消息到指定的队列(目标)
			 * 
			 * @param queueName
			 *            队列名称
			 * @param message
			 *            消息内容
			 */
			public void send(String queueName, final String message) {
				jmsTemplate.send(queueName, new MessageCreator() {
					@Override
					public Message createMessage(Session session) throws JMSException {
						return session.createTextMessage(message);
					}
				});
			}
		
			public void send(String queueName, final Map map) {
				jmsTemplate.send(queueName, new MessageCreator() {
					@Override
					public Message createMessage(Session session) throws JMSException {
						MapMessage message = session.createMapMessage();
						for (String key : map.keySet()) {
							message.setString(key, map.get(key));
						}
						return message;
					}
				});
			}
}

定义一个消费者

包目录结构如下:
ActiveMQ整合spring实战讲解_第11张图片
QueueReceiver.java:

package cn.itcast.activemq.consumer.queue;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.stereotype.Component;

/**
 * 
 * @description 队列消息监听器
 * 
 */
@Component(("queueReceiver"))
public class QueueReceiver implements MessageListener {

		@Override
		public void onMessage(Message message) {
			try {
				System.out.println("QueueReceiver接收到消息:" + ((TextMessage) message).getText());
			} catch (JMSException e) {
				e.printStackTrace();
			}
		}
}

编写测试类测试配置是否成功

测试类目录结构如下:
ActiveMQ整合spring实战讲解_第12张图片
ActiveMQTest.java:

package cn.itcast.activemq.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.itcast.activemq.producer.queue.QueueSender;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext-mq.xml")
public class ActiveMQTest {
		@Autowired
		private QueueSender queueSender;
	
		@Test
		public void testMQ() {
			queueSender.send("test.queue", "Hello,Queue");
		}
}

运行测试方法

控制台输出Hello,Queue
ActiveMQ整合spring实战讲解_第13张图片
查看activemq后台,test.queue发生如下变化:ActiveMQ整合spring实战讲解_第14张图片
消息被正常消费,至此activemq与spring成功整合。
ActiveMQ整合spring实战讲解_第15张图片

你可能感兴趣的:(技术分享,activemq,java,spring,消息队列)