From 85bf9bc506a459cb72636aec49489586074815b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johnny=20Miller=20=28=E9=94=BA=E4=BF=8A=29?= Date: Wed, 23 Feb 2022 08:01:01 +0800 Subject: [PATCH] feat($Redis): integrate with Redis distributed lock for concurrency control integrate with Redis distributed lock for concurrency control BREAKING CHANGE: integrate with Redis distributed lock for concurrency control --- spring-cloud-starter/pom.xml | 10 +++++++ .../MafAutoConfiguration.java | 1 + .../DistributedLockConfiguration.java | 28 +++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/DistributedLockConfiguration.java diff --git a/spring-cloud-starter/pom.xml b/spring-cloud-starter/pom.xml index 1c9473f6..22c618e0 100644 --- a/spring-cloud-starter/pom.xml +++ b/spring-cloud-starter/pom.xml @@ -120,6 +120,16 @@ spring-cloud-sleuth-zipkin + + + org.springframework.boot + spring-boot-starter-integration + + + org.springframework.integration + spring-integration-redis + + io.minio diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java index a044becf..18ba21d7 100644 --- a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java @@ -67,6 +67,7 @@ WebMvcConfiguration.class, MyBatisPlusConfiguration.class, RedisConfiguration.class, + DistributedLockConfiguration.class, ElasticsearchConfiguration.class, WebSecurityConfiguration.class, RestTemplateConfiguration.class, diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/DistributedLockConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/DistributedLockConfiguration.java new file mode 100644 index 00000000..a37e9573 --- /dev/null +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/DistributedLockConfiguration.java @@ -0,0 +1,28 @@ +package com.jmsoftware.maf.springcloudstarter.configuration; + +import lombok.extern.slf4j.Slf4j; +import lombok.val; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.integration.redis.util.RedisLockRegistry; + +/** + *

DistributedLockConfiguration

+ *

+ * Change description here. + * + * @author Johnny Miller (鍾俊), email: johnnysviva@outlook.com, 2/23/22 7:51 AM + **/ +@Slf4j +@ConditionalOnClass({RedisLockRegistry.class}) +public class DistributedLockConfiguration { + private static final String REGISTRY_KEY = "redis-lock"; + + @Bean(destroyMethod = "destroy") + public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) { + val redisLockRegistry = new RedisLockRegistry(redisConnectionFactory, REGISTRY_KEY); + log.warn("RedisLockRegistry bean is created. {}", redisLockRegistry); + return redisLockRegistry; + } +}