!2 解决订单未支付和订单超时确认两个延迟队列相互阻塞的问题和优化初始化SQL

Merge pull request !2 from guyang/dev_20240428
This commit is contained in:
guchengwuyue authored and Gitee committed 2024-04-29 00:42:34 +00:00
commit edb16ebd3d
2 files changed
+33 -6755

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -40,36 +40,47 @@ public class RedisDelayHandle {
.setThreadFactory(threadFactory) .setThreadFactory(threadFactory)
.build(); .build();
executorService.execute(new ExecutorTask()); executorService.execute(new OrderOutTimeUnPayExecutorTask());
executorService.execute(new OrderOutTimeUnConfirmExecutorTask());
} }
class ExecutorTask implements Runnable { class OrderOutTimeUnPayExecutorTask implements Runnable {
@SneakyThrows @SneakyThrows
@Override @Override
public void run() { public void run() {
RBlockingDeque<String> blockingDeque = redissonClient RBlockingDeque<String> blockingDeque = redissonClient
.getBlockingDeque(ShopConstants.REDIS_ORDER_OUTTIME_UNPAY_QUEUE); .getBlockingDeque(ShopConstants.REDIS_ORDER_OUTTIME_UNPAY_QUEUE);
RBlockingDeque<String> blockingDeque2 = redissonClient
.getBlockingDeque(ShopConstants.REDIS_ORDER_OUTTIME_UNCONFIRM);
while (true) { while (true) {
String orderId = ""; String orderId = "";
String orderId2 = "";
try { try {
orderId = blockingDeque.take(); orderId = blockingDeque.take();
orderId2 = blockingDeque2.take();
} catch (Exception e) { } catch (Exception e) {
log.error("Redission延迟队列监测异常中断,忽略此消息:{}", e.getMessage()); log.error("Redission延迟队列监测异常中断,忽略此消息:{}", e.getMessage());
} }
if (StrUtil.isNotEmpty(orderId)) { if (StrUtil.isNotEmpty(orderId)) {
appStoreOrderService.cancelOrder(orderId, null); appStoreOrderService.cancelOrder(orderId, null);
} }
if(StrUtil.isNotEmpty(orderId2)) { }
}
}
class OrderOutTimeUnConfirmExecutorTask implements Runnable {
@SneakyThrows
@Override
public void run() {
RBlockingDeque<String> blockingDeque = redissonClient
.getBlockingDeque(ShopConstants.REDIS_ORDER_OUTTIME_UNCONFIRM);
while (true) {
String orderId = "";
try {
orderId = blockingDeque.take();
} catch (Exception e) {
log.error("Redission延迟队列监测异常中断,忽略此消息:{}", e.getMessage());
}
if (StrUtil.isNotEmpty(orderId)) {
appStoreOrderService.takeOrder(orderId, null); appStoreOrderService.takeOrder(orderId, null);
} }
}
} }
} }
}
} }