上一篇,我们已经完成了对消息中间件的理解以及activeMQ的安装,现在我们来使用springboot整合activeMQ。
- 创建springboot生产者工程 (mq-producer)
- 引入maven依赖
完整的maven依赖如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.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</artifactId>
</dependency>
<!-- spring boot web支持:mvc,aop... -->
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 配置yml文件(注意:以下ip需要根据自己实际的ip地址进行修改)
spring:
activemq:
broker-url: tcp://192.168.10.11:61616
user: admin
password: admin
queue: com.itmayiedu #队列名称
server:
port: 8081
- 创建QueueConfig
package com.itmayiedu.producer;
import javax.jms.Queue;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 创建一个队列
* @author DELL
*
*/
@Configuration
public class QueueConfig {
@Value(value = "${queue}") //获取配置文件中的队列名称
private String queue;
@Bean //注入bean
public Queue logQueue() {
return new ActiveMQQueue(queue);
}
}
- 创建Producer
package com.itmayiedu.producer;
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;
@Component
@EnableScheduling
public class Producer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
@Scheduled(fixedDelay = 5000) //定时任务,每隔5秒钟执行一次
public void send() {
jmsMessagingTemplate.convertAndSend(queue, "测试消息队列" + System.currentTimeMillis());
}
}
- 启动springboot项目,我们会发现每隔5秒钟就会在队列里面产生一条消息
至此消息生产者工程已经搭建好了,接下来我们来搭建消息消费者工程。 - 创建springboot消费者工程 mq-consumer
- 引入maven依赖
完整的maven依赖如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.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</artifactId>
</dependency>
<!-- spring boot web支持:mvc,aop... -->
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 配置yml文件
spring:
activemq:
broker-url: tcp://192.168.10.11:61616
user: admin
password: admin
queue: com.itmayiedu #队列名称,与消息生产者的队列名称保持一致
- 创建Consumer
package com.itmayiedu;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class Consumer {
@JmsListener(destination = "${queue}") //监听队列里面的消息
public void receive(String msg) {
System.out.println("监听器收到msg:" + msg);
}
}
启动springboot项目,我们会发现消费者会收到生产者发出的消息,并对其消息进行消费,如下图:
通过以上步骤,我们已经完成了springboot对activeMQ的整合。