From ae21715eb15540309aca141db006e50bd5f4f2c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5?= <184172133@qq.com>
Date: Sun, 10 Sep 2023 11:01:45 +0800
Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9ARedis?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/md/xfg-dev-tech-redis.drawio | 1 +
.../xfg/dev/tech/config/RedisClientConfig.java | 10 ++++++----
.../persistent/repository/OrderRepository.java | 3 +--
3 files changed, 8 insertions(+), 6 deletions(-)
create mode 100644 docs/md/xfg-dev-tech-redis.drawio
diff --git a/docs/md/xfg-dev-tech-redis.drawio b/docs/md/xfg-dev-tech-redis.drawio
new file mode 100644
index 0000000..0afd0d0
--- /dev/null
+++ b/docs/md/xfg-dev-tech-redis.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/xfg-dev-tech-app/src/main/java/cn/bugstack/xfg/dev/tech/config/RedisClientConfig.java b/xfg-dev-tech-app/src/main/java/cn/bugstack/xfg/dev/tech/config/RedisClientConfig.java
index 5578baa..2a816a9 100644
--- a/xfg-dev-tech-app/src/main/java/cn/bugstack/xfg/dev/tech/config/RedisClientConfig.java
+++ b/xfg-dev-tech-app/src/main/java/cn/bugstack/xfg/dev/tech/config/RedisClientConfig.java
@@ -16,7 +16,7 @@ import org.springframework.context.annotation.Configuration;
/**
* @author Fuzhengwei bugstack.cn @小傅哥
* @description Redis 客户端,使用 Redisson Redisson
- * @create 2023-09-03 16:51
+ * @create 2023-09-09 16:51
*/
@Configuration
@EnableConfigurationProperties(RedisClientConfigProperties.class)
@@ -40,19 +40,21 @@ public class RedisClientConfig {
.setPingConnectionInterval(properties.getPingInterval())
.setKeepAlive(properties.isKeepAlive())
;
+
RedissonClient redissonClient = Redisson.create(config);
- // 添加监听
String[] beanNamesForType = applicationContext.getBeanNamesForType(MessageListener.class);
for (String beanName : beanNamesForType) {
MessageListener bean = applicationContext.getBean(beanName, MessageListener.class);
- Class> beanClass = bean.getClass();
+
+ Class extends MessageListener> beanClass = bean.getClass();
+
if (beanClass.isAnnotationPresent(RedisTopic.class)) {
RedisTopic redisTopic = beanClass.getAnnotation(RedisTopic.class);
+
RTopic topic = redissonClient.getTopic(redisTopic.topic());
topic.addListener(String.class, bean);
- // 动态创建 bean 对象,注入到 spring 容器,bean 的名称为 redisTopic,对象为 RTopic
ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
beanFactory.registerSingleton(redisTopic.topic(), topic);
}
diff --git a/xfg-dev-tech-infrastructure/src/main/java/cn/bugstack/xfg/dev/tech/infrastructure/persistent/repository/OrderRepository.java b/xfg-dev-tech-infrastructure/src/main/java/cn/bugstack/xfg/dev/tech/infrastructure/persistent/repository/OrderRepository.java
index 7139ef4..2e5c69b 100644
--- a/xfg-dev-tech-infrastructure/src/main/java/cn/bugstack/xfg/dev/tech/infrastructure/persistent/repository/OrderRepository.java
+++ b/xfg-dev-tech-infrastructure/src/main/java/cn/bugstack/xfg/dev/tech/infrastructure/persistent/repository/OrderRepository.java
@@ -52,13 +52,12 @@ public class OrderRepository implements IOrderRepository {
@Override
public String createOrderByNoLock(OrderAggregate orderAggregate) {
- UserEntity userEntity = orderAggregate.getUserEntity();
SKUEntity skuEntity = orderAggregate.getSkuEntity();
// 模拟锁商品库存
long decrCount = redissonService.decr(skuEntity.getSku());
if (decrCount < 0) return "已无库存[初始化的库存和使用库存,保持一致。orderService.initSkuCount(\"13811216\", 10000);]";
- String lockKey = userEntity.getUserId().concat("_").concat(String.valueOf(decrCount));
+ String lockKey = skuEntity.getSku().concat("_").concat(String.valueOf(decrCount));
RLock lock = redissonService.getLock(lockKey);
--
GitLab