新建maven工程,我的工程名叫SpringBootActiveMQConsumer。
根据需要,在pom.xml中加入jar包的坐标,方便复制,我贴出来。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/>
</parent>
<groupId>org.example</groupId>
<artifactId>SpringBootActiveMQConsumer</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml配置文件如下,注意冒号后面要加一个空格。
server:
port: 8888
spring:
activemq:
broker-url: tcp://192.168.0.123:61616 # ActiveMQ服务器的地址和端口
user: admin
password: admin
jms:
pub-sub-domain: false # false:不使用pub-sub,也就是使用queue;true:使用pub-sub,也就是使用topic
myqueue: boot-activemq-queue # 队列的名称
创建QueueConsumer.java,编写代码,代码如下。
package com.wsy.boot.activemq.consumer;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.TextMessage;
@Component
public class QueueConsumer {
@JmsListener(destination = "${myqueue}")// 表明JmsListener监听的destination是什么
public void receive(TextMessage textMessage) throws JMSException {
System.out.println("消费者收到消息:"+textMessage.getText());
}
}
创建Main.java,编写代码,代码如下。
package com.wsy.boot.activemq;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
运行Main类的main方法,可以在控制台看到已经接收到了队列中的消息。
回想之前Spring和ActiveMQ整合的时候,需要配置一个监听器,写一个Listener类,现在只需要一个注解@JmsListener(destination = "${myqueue}"),简化了代码。