SpringBoot整合ActiveMQ
SpringBoot整合ActiveMQ
一、安装ActiveMQ
这里我们采用docker安装
1、搜索镜像
docker search activemq
2、拉取镜像
docker pull webcenter/activemq
3、初始化容器
61616 为通信端口
8161 为管理界面
docker run -d --name activemq01 -p 61616:61616 -p 8161:8161 webcenter/activemq
4、访问activemq
默认用户名和密码为 admin/admin
二、springboot整合ActiveMQ
1、pom.xml
spring-boot-starter-activemq
<?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 https://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.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.lc</groupId>
<artifactId>activemq</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>activemq</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、实体消息bean
@Getter
@Setter
@ToString
public class Message implements Serializable {
/**
* 发送的消息内容
*/
private String content;
/**
* 发送的日期
*/
private Date sendDate;
}
3、队列配置
@Configuration
public class QueueConfig {
/**
* 新建队列
* @return
*/
@Bean
Queue queue() {
return new ActiveMQQueue("hello.lc");
}
}
4、jms配置
@Component
public class JmsComponent {
/**
* jms(java messgae service(java消息服务) )消息模板
*/
@Autowired
JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
Queue queue;
/**
* 生产者
* @param message
*/
public void send(Message message) {
//发送的目的地(指定队列) ; 发送的消息对象
jmsMessagingTemplate.convertAndSend(this.queue,message);
}
/**
* 消费者
* JmsListener监听消息队列 destination 指定队列的名称
* @param message
*/
@JmsListener(destination = "hello.lc")
public void receive(Message message){
System.out.println(message);
}
}
4、properties配置
#activemq代理的url
spring.activemq.broker-url=tcp://47.96.141.44:61616
#发送消息时可为字符串或者一个对象。若为一个对象,则需要设为true
#信任所有的包 如果传输的对象是Obeject 这里必须加上这句或者指定信任的包 否则会导致对象序列化失败
spring.activemq.packages.trust-all=true
spring.activemq.user=admin
spring.activemq.password=admin
5、测试使用
@SpringBootTest
class ActivemqApplicationTests {
//默认注入单例
@Autowired
JmsComponent jmsComponent;
@Test
void contextLoads() {
Message message = new Message();
message.setContent("hello lc");
message.setSendDate(new Date());
jmsComponent.send(message);
}
}