From fcf79ddda7a39ee4a2db8e54b99b705890515fd4 Mon Sep 17 00:00:00 2001 From: xuwenbo <717567226@qq.com> Date: Sun, 8 Dec 2019 20:02:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=B6=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BB=8Eco?= =?UTF-8?q?mmon=E7=A7=BB=E5=88=B0=E6=94=BE=E5=88=B0api=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=EF=BC=8C=E5=90=A6=E5=88=99=E5=90=8E=E7=AB=AF=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/YxStoreOrderServiceImpl.java | 15 +- .../modules/task/CancelOrderService.java | 1 - .../modules/task}/DelayJobService.java | 67 +++++---- .../co/yixiang/modules/task}/ExecuteJob.java | 24 ++-- .../co/yixiang/modules/task}/JobTimer.java | 128 +++++++++--------- 5 files changed, 110 insertions(+), 125 deletions(-) rename {yshop-common/src/main/java/co/yixiang/redisson => yshop-api/src/main/java/co/yixiang/modules/task}/DelayJobService.java (90%) rename {yshop-common/src/main/java/co/yixiang/redisson => yshop-api/src/main/java/co/yixiang/modules/task}/ExecuteJob.java (81%) rename {yshop-common/src/main/java/co/yixiang/redisson => yshop-api/src/main/java/co/yixiang/modules/task}/JobTimer.java (95%) diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java index a2d25160..0e52a289 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java @@ -1,10 +1,7 @@ package co.yixiang.modules.order.service.impl; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.*; -import co.yixiang.common.constant.CacheKey; import co.yixiang.common.constant.CommonConstant; import co.yixiang.exception.ErrorRequestException; import co.yixiang.modules.activity.service.YxStoreCombinationService; @@ -40,17 +37,13 @@ import co.yixiang.modules.shop.service.YxStoreProductService; import co.yixiang.modules.shop.service.YxSystemConfigService; import co.yixiang.modules.shop.web.vo.YxStoreCartQueryVo; //import co.yixiang.modules.task.CancelOrderService; -import co.yixiang.modules.task.CancelOrderService; import co.yixiang.modules.user.entity.*; -import co.yixiang.modules.user.mapper.YxUserMapper; import co.yixiang.modules.user.service.*; -import co.yixiang.modules.user.web.controller.UserAddressController; import co.yixiang.modules.user.web.vo.YxUserAddressQueryVo; import co.yixiang.modules.user.web.vo.YxUserQueryVo; -import co.yixiang.modules.user.web.vo.YxWechatUserQueryVo; //import co.yixiang.redisson.DelayJob; //import co.yixiang.redisson.DelayJobService; -import co.yixiang.redisson.DelayJobService; +import co.yixiang.modules.task.DelayJobService; import co.yixiang.utils.OrderUtil; import co.yixiang.utils.RedisUtil; import com.alibaba.fastjson.JSON; @@ -67,8 +60,6 @@ import lombok.extern.slf4j.Slf4j; //import org.redisson.api.RQueue; //import org.redisson.api.RedissonClient; //import org.apache.webservice.config.annotation.Service; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.beans.factory.annotation.Autowired; @@ -77,13 +68,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import javax.jws.WebService; import java.io.Serializable; -import java.lang.reflect.Array; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.*; -import java.util.concurrent.TimeUnit; /** diff --git a/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java b/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java index a31e2bea..01c7e15f 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/task/CancelOrderService.java @@ -3,7 +3,6 @@ package co.yixiang.modules.task; import cn.hutool.core.util.ObjectUtil; import co.yixiang.modules.order.entity.YxStoreOrder; import co.yixiang.modules.order.service.YxStoreOrderService; -import co.yixiang.redisson.ExecuteJob; import co.yixiang.utils.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; diff --git a/yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java b/yshop-api/src/main/java/co/yixiang/modules/task/DelayJobService.java similarity index 90% rename from yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java rename to yshop-api/src/main/java/co/yixiang/modules/task/DelayJobService.java index 67e8da26..30d21471 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/DelayJobService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/task/DelayJobService.java @@ -1,34 +1,33 @@ -package co.yixiang.redisson; - -import org.redisson.api.RBlockingQueue; -import org.redisson.api.RDelayedQueue; -import org.redisson.api.RQueue; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * Created by kl on 2018/7/20. - * Content :订单延时job服务 - */ -@Component -public class DelayJobService { - - @Autowired - private RedissonClient client; - - /** - * 添加超时任务到redis队列 - * @param job 任务 - * @param delay 超时时间 - */ - public void submitJob(Map job, Long delay){ - RQueue> blockingQueue = client.getQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS); - RDelayedQueue> delayedQueue = client.getDelayedQueue(blockingQueue); - delayedQueue.offer(job,delay,TimeUnit.MILLISECONDS); - delayedQueue.destroy(); - } -} +package co.yixiang.modules.task; + +import org.redisson.api.RDelayedQueue; +import org.redisson.api.RQueue; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * Created by kl on 2018/7/20. + * Content :订单延时job服务 + */ +@Component +public class DelayJobService { + + @Autowired + private RedissonClient client; + + /** + * 添加超时任务到redis队列 + * @param job 任务 + * @param delay 超时时间 + */ + public void submitJob(Map job, Long delay){ + RQueue> blockingQueue = client.getQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS); + RDelayedQueue> delayedQueue = client.getDelayedQueue(blockingQueue); + delayedQueue.offer(job,delay,TimeUnit.MILLISECONDS); + delayedQueue.destroy(); + } +} diff --git a/yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java b/yshop-api/src/main/java/co/yixiang/modules/task/ExecuteJob.java similarity index 81% rename from yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java rename to yshop-api/src/main/java/co/yixiang/modules/task/ExecuteJob.java index 5ae8618f..e8fb9d14 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/ExecuteJob.java +++ b/yshop-api/src/main/java/co/yixiang/modules/task/ExecuteJob.java @@ -1,12 +1,12 @@ -package co.yixiang.redisson; - -import java.util.Map; - -/** - * Created by kl on 2018/7/20. - * Content :延时job执行器接口 - */ -public interface ExecuteJob { - - void execute(Map job); -} +package co.yixiang.modules.task; + +import java.util.Map; + +/** + * Created by kl on 2018/7/20. + * Content :延时job执行器接口 + */ +public interface ExecuteJob { + + void execute(Map job); +} diff --git a/yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java b/yshop-api/src/main/java/co/yixiang/modules/task/JobTimer.java similarity index 95% rename from yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java rename to yshop-api/src/main/java/co/yixiang/modules/task/JobTimer.java index ece4574f..4964a660 100644 --- a/yshop-common/src/main/java/co/yixiang/redisson/JobTimer.java +++ b/yshop-api/src/main/java/co/yixiang/modules/task/JobTimer.java @@ -1,64 +1,64 @@ -package co.yixiang.redisson; - -import org.redisson.api.RBlockingQueue; -import org.redisson.api.RDelayedQueue; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -/** - * 消费已经到点的延时job服务,通过job参数调用业务执行器实现 - */ -@Component -public class JobTimer { - - static final String CUSTOMER_JOB_TIMER_JOBS = "customer_job_timer_jobs"; - @Autowired - private RedissonClient client; - - @Autowired - private ExecuteJob service; - - ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); - @PostConstruct - public void startJobTimer() { - RBlockingQueue> blockingQueue = client.getBlockingQueue(CUSTOMER_JOB_TIMER_JOBS); - RDelayedQueue> delayedQueue = client.getDelayedQueue(blockingQueue); - new Thread(() -> { - while (true) { - try { - Map job = blockingQueue.take(); - executorService.execute(new ExecutorTask(job)); - } catch (Exception e) { - e.printStackTrace(); - try { - TimeUnit.SECONDS.sleep(60); - } catch (Exception ex) { - - } - }finally { - delayedQueue.destroy(); - } - } - }).start(); - } - class ExecutorTask implements Runnable { - - - private Map delayJob; - - public ExecutorTask(Map delayJob) { - this.delayJob = delayJob; - } - @Override - public void run() { - service.execute(delayJob); - } - } -} +package co.yixiang.modules.task; + +import org.redisson.api.RBlockingQueue; +import org.redisson.api.RDelayedQueue; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * 消费已经到点的延时job服务,通过job参数调用业务执行器实现 + */ +@Component +public class JobTimer { + + static final String CUSTOMER_JOB_TIMER_JOBS = "customer_job_timer_jobs"; + @Autowired + private RedissonClient client; + + @Autowired + private ExecuteJob service; + + ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2); + @PostConstruct + public void startJobTimer() { + RBlockingQueue> blockingQueue = client.getBlockingQueue(CUSTOMER_JOB_TIMER_JOBS); + RDelayedQueue> delayedQueue = client.getDelayedQueue(blockingQueue); + new Thread(() -> { + while (true) { + try { + Map job = blockingQueue.take(); + executorService.execute(new ExecutorTask(job)); + } catch (Exception e) { + e.printStackTrace(); + try { + TimeUnit.SECONDS.sleep(60); + } catch (Exception ex) { + + } + }finally { + delayedQueue.destroy(); + } + } + }).start(); + } + class ExecutorTask implements Runnable { + + + private Map delayJob; + + public ExecutorTask(Map delayJob) { + this.delayJob = delayJob; + } + @Override + public void run() { + service.execute(delayJob); + } + } +}