spring-boot集成activeMQ(一)-使用默认的ActiveMQ

本文详细介绍如何在Spring Boot项目中集成并使用ActiveMQ。通过示例代码展示了消息生产者、消费者及队列配置的具体实现过程。
摘要由CSDN通过智能技术生成

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>

然后是项目结构:

173432_eqHw_2278977.png

 

首先,我们分析下,作为队列消息,肯定是需要一个生产者,一个消费者,以及一个仓库(也就是队列,用来存放生产者生产的消息,消费者从这取出消息进行处理)

 

有思路了,就好做了,首先,我们先构建一个生产者,代码如下

/**
 * 项目名: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);
   }

 

打印结果为:

174444_7EkV_2278977.png

可以看到,生产者每隔3S生产一条消息放入队列内,而消费者也去队列内获取了消息,说明代码是正确的.

 

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

 

欢迎转载,请注明出处跟作者,谢谢!

 

转载于:https://my.oschina.net/u/2278977/blog/795025

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值