mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-12 07:25:39 +08:00
refactor(mq): 提取 ArtemisBeanNames 常量类,消除 Bean 名字符串字面量
将 common-artemis 模块引用的 JMS Bean 名(jmsTemplate / topicJmsTemplate / topicListenerFactory)集中到新建的 ArtemisBeanNames 接口,替换 ArtemisCommonAutoConfiguration、ArtemisTemplateService 及消费端 (DemoTopicConsumer、CacheInvalidationConsumer)中的字符串字面量。 同时清理遗留的对账单模板.xlsx(对账模块已删除)。
This commit is contained in:
@@ -6,6 +6,7 @@ import org.dromara.daxpay.payment.admin.controller.demo.constant.DemoArtemisCons
|
||||
import org.dromara.daxpay.payment.admin.controller.demo.message.DemoArtemisMessage;
|
||||
import org.dromara.daxpay.payment.admin.controller.demo.result.DemoMessageResult;
|
||||
import org.dromara.daxpay.payment.admin.controller.demo.store.DemoMessageStore;
|
||||
import org.dromara.daxpay.platform.common.artemis.ArtemisBeanNames;
|
||||
import org.dromara.daxpay.platform.common.json.util.JacksonUtil;
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -25,13 +26,13 @@ public class DemoTopicConsumer {
|
||||
private final DemoMessageStore store;
|
||||
|
||||
/// 订阅者 A
|
||||
@JmsListener(destination = DemoArtemisConstants.TOPIC, containerFactory = "topicListenerFactory")
|
||||
@JmsListener(destination = DemoArtemisConstants.TOPIC, containerFactory = ArtemisBeanNames.TOPIC_LISTENER_FACTORY)
|
||||
public void onMessageA(String json) {
|
||||
handle(json, "demo-topic-consumer-A");
|
||||
}
|
||||
|
||||
/// 订阅者 B(同节点模拟多订阅者)
|
||||
@JmsListener(destination = DemoArtemisConstants.TOPIC, containerFactory = "topicListenerFactory")
|
||||
@JmsListener(destination = DemoArtemisConstants.TOPIC, containerFactory = ArtemisBeanNames.TOPIC_LISTENER_FACTORY)
|
||||
public void onMessageB(String json) {
|
||||
handle(json, "demo-topic-consumer-B");
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -4,6 +4,7 @@ import org.dromara.daxpay.platform.capability.cache.core.LocalCacheRegistry;
|
||||
import org.dromara.daxpay.platform.capability.cache.notify.message.CacheInvalidationMessage;
|
||||
import org.dromara.daxpay.platform.capability.cache.notify.message.CacheInvalidationType;
|
||||
import org.dromara.daxpay.platform.capability.cache.notify.support.CacheTopicConstants;
|
||||
import org.dromara.daxpay.platform.common.artemis.ArtemisBeanNames;
|
||||
import org.dromara.daxpay.platform.common.json.util.JacksonUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -40,7 +41,7 @@ public class CacheInvalidationConsumer {
|
||||
/// 方法签名接收原始 JSON 字符串(统一 Text 传输),手动反序列化为目标类型。
|
||||
@JmsListener(
|
||||
destination = CacheTopicConstants.TOPIC,
|
||||
containerFactory = "topicListenerFactory"
|
||||
containerFactory = ArtemisBeanNames.TOPIC_LISTENER_FACTORY
|
||||
)
|
||||
public void onMessage(String json) {
|
||||
CacheInvalidationMessage message;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package org.dromara.daxpay.platform.common.artemis;
|
||||
|
||||
/// # Artemis Bean 名常量
|
||||
///
|
||||
/// 集中维护 common-artemis 模块引用到的所有 JMS Bean 名,
|
||||
/// 供 `@Bean` / `@ConditionalOnMissingBean` / `@Qualifier` /
|
||||
/// `@JmsListener(containerFactory=...)` 引用,避免散落的字符串字面量。
|
||||
public interface ArtemisBeanNames {
|
||||
|
||||
/// Queue 发送模板 Bean 名(pubSubDomain=false)
|
||||
///
|
||||
/// Spring Boot `JmsAutoConfiguration` 默认装配,非本项目自定义
|
||||
String QUEUE_JMS_TEMPLATE = "jmsTemplate";
|
||||
|
||||
/// Topic 发送模板 Bean 名(pubSubDomain=true,本项目自定义)
|
||||
String TOPIC_JMS_TEMPLATE = "topicJmsTemplate";
|
||||
|
||||
/// Topic 监听容器工厂 Bean 名(pubSubDomain=true,本项目自定义),
|
||||
/// 所有订阅 Topic 的 `@JmsListener` 通过 `containerFactory` 引用
|
||||
String TOPIC_LISTENER_FACTORY = "topicListenerFactory";
|
||||
}
|
||||
@@ -44,20 +44,14 @@ import org.springframework.jms.core.JmsTemplate;
|
||||
@EnableJms
|
||||
public class ArtemisCommonAutoConfiguration {
|
||||
|
||||
/// Topic 发送模板的 Bean 名
|
||||
public static final String TOPIC_JMS_TEMPLATE = "topicJmsTemplate";
|
||||
|
||||
/// Topic 监听容器工厂的 Bean 名,供所有 `@JmsListener` 订阅 Topic 时引用
|
||||
public static final String TOPIC_LISTENER_FACTORY = "topicListenerFactory";
|
||||
|
||||
/// Topic 发送专用 JmsTemplate(pubSubDomain=true)
|
||||
///
|
||||
/// 与 Spring Boot 默认的 `jmsTemplate`(Queue 模式)共存,
|
||||
/// 由 `ArtemisTemplateService` 通过 `@Qualifier` 注入。
|
||||
///
|
||||
/// 不设置 MessageConverter,回落到 Spring 默认 `SimpleMessageConverter`(String ↔ TextMessage 透传)。
|
||||
@Bean(TOPIC_JMS_TEMPLATE)
|
||||
@ConditionalOnMissingBean(name = TOPIC_JMS_TEMPLATE)
|
||||
@Bean(ArtemisBeanNames.TOPIC_JMS_TEMPLATE)
|
||||
@ConditionalOnMissingBean(name = ArtemisBeanNames.TOPIC_JMS_TEMPLATE)
|
||||
public JmsTemplate topicJmsTemplate(ConnectionFactory connectionFactory) {
|
||||
JmsTemplate template = new JmsTemplate(connectionFactory);
|
||||
// 关键:开启 pub-sub 模式,destination 解析为 Topic(multicast)
|
||||
@@ -70,8 +64,8 @@ public class ArtemisCommonAutoConfiguration {
|
||||
/// 所有需要订阅 Topic 的 `@JmsListener` 通过
|
||||
/// `containerFactory = "topicListenerFactory"` 引用,
|
||||
/// 取代各业务模块自行创建重复的 Topic ListenerFactory。
|
||||
@Bean(TOPIC_LISTENER_FACTORY)
|
||||
@ConditionalOnMissingBean(name = TOPIC_LISTENER_FACTORY)
|
||||
@Bean(ArtemisBeanNames.TOPIC_LISTENER_FACTORY)
|
||||
@ConditionalOnMissingBean(name = ArtemisBeanNames.TOPIC_LISTENER_FACTORY)
|
||||
public JmsListenerContainerFactory<?> topicListenerFactory(ConnectionFactory connectionFactory) {
|
||||
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
|
||||
factory.setConnectionFactory(connectionFactory);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.dromara.daxpay.platform.common.artemis.service;
|
||||
|
||||
import org.dromara.daxpay.platform.common.artemis.ArtemisBeanNames;
|
||||
import org.dromara.daxpay.platform.common.artemis.ArtemisCommonAutoConfiguration;
|
||||
import org.dromara.daxpay.platform.common.artemis.exception.ArtemisException;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
@@ -52,8 +53,8 @@ public class ArtemisTemplateService {
|
||||
/// Topic 模板(pubSubDomain=true),见 [ArtemisCommonAutoConfiguration#topicJmsTemplate]
|
||||
private final JmsTemplate topicJmsTemplate;
|
||||
|
||||
public ArtemisTemplateService(@Qualifier("jmsTemplate") JmsTemplate queueJmsTemplate,
|
||||
@Qualifier(ArtemisCommonAutoConfiguration.TOPIC_JMS_TEMPLATE) JmsTemplate topicJmsTemplate) {
|
||||
public ArtemisTemplateService(@Qualifier(ArtemisBeanNames.QUEUE_JMS_TEMPLATE) JmsTemplate queueJmsTemplate,
|
||||
@Qualifier(ArtemisBeanNames.TOPIC_JMS_TEMPLATE) JmsTemplate topicJmsTemplate) {
|
||||
this.queueJmsTemplate = queueJmsTemplate;
|
||||
this.topicJmsTemplate = topicJmsTemplate;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user