ActiveMq to SpringBoot

ActiveMq to SpringBoot

springboot版本:2.7.0

必要包

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

<dependency>
<groupId>org.messaginghub</groupId>
<artifactId>pooled-jms</artifactId>
</dependency>

全部pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?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.7.0</version>
<relativePath/>
</parent>
<groupId>com.crudclass</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot</name>
<description>springboot</description>
<properties>
<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-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</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>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

<dependency>
<groupId>org.messaginghub</groupId>
<artifactId>pooled-jms</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>

</project>

ActiveMq相关yml配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# ActiveMQ 配置文件
spring:
activemq:
broker-url: tcp://localhost:61616
# 默认的ActiveMq URL 是否应该在内存中。如果指定了一个明确的经纪商,则忽略不计。
in-memory: false
# ActiveMq的登录用户。
user: admin
# ActiveMq的登录密码。
password: 123456
# 在考虑完成关闭前要等待的时间。
close-timeout: 15s
# 在重新发送回滚的消息之前,是否停止消息的发送。事务。这意味着,当启用该功能时,消息的顺序不会被保留。
non-blocking-redelivery: false
# 在消息发送时等待响应的时间。把它设置为 0 就可以永远等待。
send-timeout: 0ms
# 是否信任所有软件包。
packages:
trust-all: false
# 逗号分隔的特定软件包列表(当不信任所有包)
trusted:
pool:
# 是否应该创建一个JmsPoolConnectionFactory,而不是一个普通的ConnectionFactory。
enabled: true
# 当请求连接而池子已满时,是否进行阻塞。将其设置为false来代替抛出一个 "JMSException"
block-if-full: false
# 如果池子仍然是满的,在抛出异常之前的阻塞期
block-if-full-timeout: 1ms
# 连接空闲超时。
idle-timeout: 30s
# 池化连接的最大数量。
max-connections: 1
# 池中每个连接的最大池化会话数。
max-sessions-per-connection: 500
# 空闲连接驱逐线程运行之间的睡眠时间。当为负数时。没有空闲连接驱逐线程运行。
time-between-expiration-check: -1ms
# 是否只使用一个匿名的 "MessageProducer "实例。将其设置为false以每次需要创建一个 "MessageProducer "时。
use-anonymous-producers: false

相关java代码

队列模式实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package ?;

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.jms.Queue;

@Configuration
public class ActiveMQConfig {

@Bean
public Queue queue(){
return new ActiveMQQueue("queue");
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package ?;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.jms.Queue;

@Component
public class ActiveMQTool {

@Resource
private JmsMessagingTemplate jmsMessagingTemplate;

@Resource
private Queue queue;

public void sendMsg(String msg) {
System.out.println("发送消息内容 :" + msg);
this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
}

@JmsListener(destination = "sms.queue")
public void receiveMsg(String text) {
System.out.println("接收到消息 : "+text);
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package ?;

import ?.ActiveMQTool;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
class SpringbootApplicationTests {


@Autowired
ActiveMQTool activeMQTool;

@Test
void contextLoads() {
activeMQTool.sendMsg("测试");
}

}


ActiveMq to SpringBoot
https://crudclass.github.io/2022/05/30/Spring/MQ/SpringToActiveMq/
作者
Zero
发布于
星期一, 五月 30日 2022, 3:42 下午
许可协议