xiongzhu 3 лет назад
Родитель
Сommit
4c52a1f000

+ 4 - 0
src/main/java/com/izouma/nineth/annotations/RedisLock.java

@@ -1,5 +1,7 @@
 package com.izouma.nineth.annotations;
 
+import com.izouma.nineth.enums.RedisLockBehavior;
+
 import java.lang.annotation.*;
 import java.util.concurrent.TimeUnit;
 
@@ -12,4 +14,6 @@ public @interface RedisLock {
     long expire() default 10;
 
     TimeUnit unit() default TimeUnit.SECONDS;
+
+    RedisLockBehavior behavior() default RedisLockBehavior.THROW;
 }

+ 6 - 0
src/main/java/com/izouma/nineth/enums/RedisLockBehavior.java

@@ -0,0 +1,6 @@
+package com.izouma.nineth.enums;
+
+public enum RedisLockBehavior {
+    THROW,
+    RETRY
+}

+ 1 - 1
src/main/java/com/izouma/nineth/listener/OrderNotifyListener.java

@@ -20,7 +20,7 @@ import org.springframework.stereotype.Service;
 @RocketMQMessageListener(
         consumerGroup = "${general.order-notify-group}",
         topic = "${general.order-notify-topic}",
-        consumeMode = ConsumeMode.ORDERLY)
+        consumeMode = ConsumeMode.CONCURRENTLY, consumeThreadMax = 2)
 @ConditionalOnProperty(value = "general.notify-server", havingValue = "true")
 public class OrderNotifyListener implements RocketMQListener<OrderNotifyEvent> {
     private OrderService       orderService;

+ 3 - 2
src/main/java/com/izouma/nineth/service/OrderCancelService.java

@@ -56,7 +56,7 @@ public class OrderCancelService {
     }
 
     @Scheduled(fixedRate = 30000, initialDelay = 10000)
-    @RedisLock(value = "order_batch_cancel_lock", expire = 3, unit = TimeUnit.MINUTES)
+    @RedisLock(value = "order_batch_cancel", expire = 3, unit = TimeUnit.MINUTES)
     public void batchCancel() {
         List<Order> orders = orderRepo.findByStatusAndCreatedAtBeforeAndDelFalse(OrderStatus.NOT_PAID,
                 LocalDateTime.now().minusSeconds(orderCancelInterval));
@@ -73,7 +73,7 @@ public class OrderCancelService {
     }
 
     @Scheduled(fixedRate = 30000, initialDelay = 20000)
-    @RedisLock(value = "gift_order_batch_cancel_lock", expire = 3, unit = TimeUnit.MINUTES)
+    @RedisLock(value = "mint_order_batch_cancel", expire = 3, unit = TimeUnit.MINUTES)
     public void batchCancelMintOrder() {
         List<MintOrder> orders = mintOrderRepo.findByStatusAndCreatedAtBeforeAndDelFalse(MintOrderStatus.NOT_PAID,
                 LocalDateTime.now().minusSeconds(orderCancelInterval));
@@ -89,6 +89,7 @@ public class OrderCancelService {
     }
 
     @Scheduled(fixedRate = 30000, initialDelay = 30000)
+    @RedisLock(value = "gift_order_batch_cancel", expire = 3, unit = TimeUnit.MINUTES)
     public void batchCancelGiftOrder() {
         List<GiftOrder> orders = giftOrderRepo.findByStatusAndCreatedAtBeforeAndDelFalse(OrderStatus.NOT_PAID,
                 LocalDateTime.now().minusSeconds(orderCancelInterval));