spring-boot集成ActiveMQ很简单,都不需要安装什么,因为默认使用的就是内存的ActiveMQ,因为是测试配合使用,所以这次就不使用ActiveMQ Server了,一般业务都是使用ActiveMQ Server,下篇在介绍使用ActiveMQ Server
先来说说我的环境吧: jdk版本号是1.8,springboot的版本号是1.4.1
先来看看pom文件,引入的依赖
<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>
然后是项目结构:

首先,我们分析下,作为队列消息,肯定是需要一个生产者,一个消费者,以及一个仓库(也就是队列,用来存放生产者生产的消息,消费者从这取出消息进行处理)
有思路了,就好做了,首先,我们先构建一个生产者,代码如下
/**
* 项目名: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);
}
}
生产者有了,接下来就是消费者了,消费者代码如下:
/**
* 项目名: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");
}
}
三者都有了,下面就是测试看看队列是否生效
执行下面代码的main方法
@SpringBootApplication(scanBasePackages = {"com"})//扫描com包的注解类为bean
public class DemoApplication{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
打印结果为:

可以看到,生产者每隔3S生产一条消息放入队列内,而消费者也去队列内获取了消息,说明代码是正确的.
以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正
欢迎转载,请注明出处跟作者,谢谢!
本文详细介绍如何在Spring Boot项目中集成并使用ActiveMQ。通过示例代码展示了消息生产者、消费者及队列配置的具体实现过程。


1995

被折叠的 条评论
为什么被折叠?



