spring-boot集成ActiveMQ很简单,都不须要安装什么,由于默认使用的就是内存的ActiveMQ,由于是测试配合使用,因此此次就不使用ActiveMQ Server了,通常业务都是使用ActiveMQ Server,下篇在介绍使用ActiveMQ Server
先来讲说个人环境吧: jdk版本号是1.8,springboot的版本号是1.4.1java
先来看看pom文件,引入的依赖web
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入该jar包,能够使用默认的ActiveMQ--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> </dependencies>
而后是项目结构:spring
首先,咱们分析下,做为队列消息,确定是须要一个生产者,一个消费者,以及一个仓库(也就是队列,用来存放生产者生产的消息,消费者从这取出消息进行处理)
有思路了,就好作了,首先,咱们先构建一个生产者,代码以下springboot
/** * 项目名:SpringBootDemo * 建立人:贺小五 * 建立时间:16/11/27 下午3:59 * 类名:MessageVo * 类描述: * 消息生产者 */ //注册为一个bean @Component //开启定时器 @EnableScheduling public class MessageProduction { @Autowired private JmsMessagingTemplate jmsMessagingTemplate;//使用JmsMessagingTemplate将消息放入队列 @Autowired private Queue queue; @Scheduled(fixedDelay = 3000)//每3s执行1次,将消息放入队列内 public void send() { this.jmsMessagingTemplate.convertAndSend(this.queue, "测试消息队列"+System.currentTimeMillis()/1000); } }
生产者有了,接下来就是消费者了,消费者代码以下:spring-boot
/** * 项目名:SpringBootDemo * 建立人:贺小五 * 建立时间:16/11/27 下午4:00 * 类名:MessageListener * 类描述: * 消息监听者 */ @Component public class MessageListener { /**使用@JmsListener注解来监听指定的某个队列内的消息,是否有新增,有的话则取出队列内消息 *进行处理 **/ @JmsListener(destination="my-message") public void removeMessage(String msg){ System.out.println("监听接收到的消息是:"+msg);//打印队列内的消息 } }
消费者,生产已经有了,那下面就看仓库代码吧,代码以下:测试
/** * 项目名:SpringBootDemo * 建立人:贺小五 * 建立时间:16/11/27 下午3:57 * 类名:MessagePush * 类描述: * 队列消息发送者 */ @Component public class MessageQueue { //返回一个名为my-message的队列,而且注册为bean @Bean public Queue queue(){ return new ActiveMQQueue("my-message"); } }
三者都有了,下面就是测试看看队列是否生效ui
执行下面代码的main方法this
@SpringBootApplication(scanBasePackages = {"com"})//扫描com包的注解类为bean public class DemoApplication{ public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }
打印结果为:spa
能够看到,生产者每隔3S生产一条消息放入队列内,而消费者也去队列内获取了消息,说明代码是正确的.队列
以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正
欢迎转载,请注明出处跟做者,谢谢!