feat(artemis): 支持 embedded/native 双模式切换,环境变量注入凭证

- common-artemis 引入 artemis-jms-server,使 spring.artemis.mode=embedded 可用
- dev 默认 embedded(无需独立 broker 容器),prod 默认 native(连独立容器)
- 凭证/地址全部环境变量化(ARTEMIS_MODE/BROKER_URL/USER/PASSWORD/DATA_DIR)
- prod 凭证改空串兜底,embedded 模式不传也不报错;native 由 installer 注入
- embedded 持久化开启(journal 落盘,支付超时/通知消息重启不丢)
- .gitignore 忽略 Artemis 运行时数据目录 data/
This commit is contained in:
daxpay
2026-08-11 08:52:41 +08:00
parent 0d747ee782
commit 5b8e152e04
4 changed files with 35 additions and 14 deletions

3
.gitignore vendored
View File

@@ -18,3 +18,6 @@ rebel.xml
.trae
nul
# Artemis 嵌入式 broker 运行时持久化目录journal/分页/绑定)
data/

View File

@@ -24,6 +24,13 @@
<groupId>org.messaginghub</groupId>
<artifactId>pooled-jms</artifactId>
</dependency>
<!-- 嵌入式 Artemis server提供 EmbeddedActiveMQ + Configuration
常驻 fat jar使 spring.artemis.mode=embedded 可用mode=native 时本依赖不被装配路径触发。
版本由 Spring Boot BOM 管理。 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jms-server</artifactId>
</dependency>
<!-- JSON 序列化 -->
<dependency>
<groupId>cn.daxpay.open</groupId>

View File

@@ -34,21 +34,23 @@ spring:
lettuce:
pool:
max-wait: 1000ms
# Artemis 消息队列配置独立容器部署JMS 协议
# 本地开发启动 broker
# Artemis 消息队列双模式native=外置容器 / embedded=内嵌 JVM
# 本地开发默认 embedded无需启动独立 artemis 容器broker 内嵌后端 JVM
# 如需连外部 broker联调 docker artemis设环境变量
# ARTEMIS_MODE=native + ARTEMIS_BROKER_URL/USER/PASSWORD
artemis:
# 连接模式native 表示连接外部独立 broker非嵌入式
mode: native
# Broker 连接地址
broker-url: tcp://192.168.1.229:61616
# broker 账号(与容器启动环境变量一致)
user: admin
password: admin
# 连接池
mode: ${ARTEMIS_MODE:embedded}
broker-url: ${ARTEMIS_BROKER_URL:tcp://192.168.1.229:61616}
user: ${ARTEMIS_USER:admin}
password: ${ARTEMIS_PASSWORD:admin}
pool:
enabled: true
max-connections: 10
idle-timeout: 30s
embedded:
enabled: true
persistent: true
data-directory: ${ARTEMIS_DATA_DIR:./data/artemis}
jms:
# 会话缓存,提升发送性能
cache:

View File

@@ -40,16 +40,25 @@ spring:
lettuce:
pool:
max-wait: 1000ms
# Artemis 消息队列(凭证环境变量注入)
# Artemis 消息队列双模式native=外置容器 / embedded=内嵌 JVM
# 切换:环境变量 ARTEMIS_MODE=native|embedded默认 native无需改代码、不重打包
# - native连接独立 artemis 容器(标准部署),需 ARTEMIS_USER/PASSWORDinstaller 注入)
# - embeddedbroker 内嵌后端 JVM内存紧张场景省独立 JVM无需凭证journal 落 ARTEMIS_DATA_DIR
artemis:
mode: native
mode: ${ARTEMIS_MODE:native}
broker-url: ${ARTEMIS_BROKER_URL:tcp://artemis:61616}
user: ${ARTEMIS_USER:?missing ARTEMIS_USER}
password: ${ARTEMIS_PASSWORD:?missing ARTEMIS_PASSWORD}
# 凭证空串兜底embedded 模式不传也不报错native 模式由 installer 注入真实值
user: ${ARTEMIS_USER:}
password: ${ARTEMIS_PASSWORD:}
pool:
enabled: true
max-connections: 20
idle-timeout: 30s
embedded:
enabled: true
# 持久化:支付超时 / 通知消息重启不丢journal 落盘)
persistent: true
data-directory: ${ARTEMIS_DATA_DIR:./data/artemis}
jms:
cache:
enabled: true