Spring Boot集成ActiveMQ

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot集成ActiveMQ相关的知识,希望对你有一定的参考价值。

在Spring Boot中集成ActiveMQ相对还是比较简单的,都不需要安装什么服务,默认使用内存的activeMQ,当然配合ActiveMQ Server会更好。在这里我们简单介绍怎么使用,本节主要分以下几个步骤:

(1) 新建Maven Java Project;

(2) 在pom.xml引入依赖;

(3) 编码测试

(4) 配置信息

接下来看看各个步骤的操作:

(1) 新建Maven Java Project;

       新建一个工程取名为spring-boot-activemq

(2) 在pom.xml引入依赖;

       <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://www.1.qixoo.com.maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>com.kfit</groupId>

  <artifactId>spring-boot-activemq</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>spring-boot-activemq</name>

  <url>http://maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     <!-- jdk版本号,Angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->

    <java.version>1.8</java.version>

  </properties>

 

    <!--

       spring boot 父节点依赖,

       引入这个之后相关的引入就不需要添加version配置,

       spring boot会自动选择最合适的版本进行添加。

     -->

    <parent>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-parent</artifactId>

       <version>1.4.0.RELEASE</version>

    </parent>

 

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <scope>test</scope>

    </dependency>

   

    <!-- spring boot web支持:mvc,aop...-->

    <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

   

    <!-- activemq support -->

    <dependency>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-activemq</artifactId>

    </dependency>

   

  </dependencies>

</project>

       这里是引入了activemq的依赖,在这里需要注意下spring boot的版本是1.4.0之前的大部分的例子都是1.3.3的,这里必须是1.4+不然是不支持activemq。

(3) 编码测试

       这里主要涉及到几个角色,消息生产者,消息队列,消息消费者。所以只需要把这个解决实现了,编码也就完成了。

       消息队列Queue,这里编写在启动类App.java中,以@Bean的方式注入:

package com.kfit;

 

import javax.jms.Queue;

 

import org.apache.activemq.command.ActiveMQQueue;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Bean;

 

/**

 *

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2016年8月23日

 */

@SpringBootApplication

public class App {

    @Bean

    public Queue queue() {

       returnnew ActiveMQQueue("sample.queue");

    }

   

    public static void main(String[] args) {

       SpringApplication.run(App.class, args);

    }

}

       在这里注入了一个ActiveMQQueue。

       消息生产者com.kfit.demo.Producer:

package com.kfit.demo;

 

import javax.jms.Queue;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jms.core.JmsMessagingTemplate;

import org.springframework.scheduling.annotation.EnableScheduling;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

 

/**

 * 消息生产者.

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2016年8月23日

 */

@Component

@EnableScheduling

public class Producer {

   

    @Autowired

    private JmsMessagingTemplate jmsMessagingTemplate;

   

    @Autowired

    private Queue queue;

   

    @Scheduled(fixedDelay=3000)//每3s执行1次

    public void send() {

       this.jmsMessagingTemplate.convertAndSend(this.queue, "hi,activeMQ");

    }

   

}

       这里使用JmsMessagingTemplate  进行消息的操作,然后使用任务调度3秒1次执行消息的发布。

       消息消费者com.kfit.demo.Consumer:

package com.kfit.demo;

import org.springframework.jms.annotation.JmsListener;

import org.springframework.stereotype.Component;

 

/**

 * 消息消费者.

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2016年8月23日

 */

@Component

public class Consumer {

    @JmsListener(destination = "sample.queue")

    public void receiveQueue(String text) {

       System.out.println(text);

    }

}

       这里主要是加入了@JmsListener进行监听,然后接收消息然后打印。

       好了,到这里就大功告成了。运行下程序观察控制台的打印信息:

hi,activeMQ

hi,activeMQ

hi,activeMQ

 

(4) 配置信息

       在上面我们并没有配置activeMQ的相关信息,实际上spring boot提供了默认的配置,我们可以在application.properties进行配置:

# ACTIVEMQ (ActiveMQProperties)

spring.activemq.broker-url= # URL of the ActiveMQ broker.Auto-generated by default. For instance `tcp://localhost:61616`

spring.activemq.in-memory=true # Specify if the default broker URL shouldbe in memory. Ignored if an explicit broker has been specified.

spring.activemq.password= # Login password of the broker.

spring.activemq.user= # Login user of the broker.

spring.activemq.packages.trust-all=false # Trust all packages.

spring.activemq.packages.trusted= # Comma-separated list of specific packagesto trust (when not trusting all packages).

spring.activemq.pool.configuration.*= # See PooledConnectionFactory.

spring.activemq.pool.enabled=false # Whether aPooledConnectionFactory should be created instead of a regularConnectionFactory.

spring.activemq.pool.expiry-timeout=0 # Connection expiration timeout inmilliseconds.

spring.activemq.pool.idle-timeout=30000 # Connection idle timeout inmilliseconds.

spring.activemq.pool.max-connections=1 # Maximum number of pooled connections.



































































































































































































































































































































以上是关于Spring Boot集成ActiveMQ的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot 集成 rabbitmq

Spring Boot(十八):使用Spring Boot集成FastDFS

Spring Boot集成Mybatis及通用Mapper

Shiro:Spring-boot如何集成Shiro(上)

Spring Boot学习笔记——Spring Boot与Redis的集成

Spring Boot 和 Nginx 集成