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

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生产一条消息放入队列内,而消费者也去队列内获取了消息,说明代码是正确的.队列

 

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

 

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

相关文章
相关标签/搜索