延时任务从common移到放到api模块,否则后端启动报错
This commit is contained in:
@ -1,10 +1,7 @@
|
|||||||
package co.yixiang.modules.order.service.impl;
|
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.date.DateUtil;
|
||||||
import cn.hutool.core.util.*;
|
import cn.hutool.core.util.*;
|
||||||
import co.yixiang.common.constant.CacheKey;
|
|
||||||
import co.yixiang.common.constant.CommonConstant;
|
import co.yixiang.common.constant.CommonConstant;
|
||||||
import co.yixiang.exception.ErrorRequestException;
|
import co.yixiang.exception.ErrorRequestException;
|
||||||
import co.yixiang.modules.activity.service.YxStoreCombinationService;
|
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.service.YxSystemConfigService;
|
||||||
import co.yixiang.modules.shop.web.vo.YxStoreCartQueryVo;
|
import co.yixiang.modules.shop.web.vo.YxStoreCartQueryVo;
|
||||||
//import co.yixiang.modules.task.CancelOrderService;
|
//import co.yixiang.modules.task.CancelOrderService;
|
||||||
import co.yixiang.modules.task.CancelOrderService;
|
|
||||||
import co.yixiang.modules.user.entity.*;
|
import co.yixiang.modules.user.entity.*;
|
||||||
import co.yixiang.modules.user.mapper.YxUserMapper;
|
|
||||||
import co.yixiang.modules.user.service.*;
|
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.YxUserAddressQueryVo;
|
||||||
import co.yixiang.modules.user.web.vo.YxUserQueryVo;
|
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.DelayJob;
|
||||||
//import co.yixiang.redisson.DelayJobService;
|
//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.OrderUtil;
|
||||||
import co.yixiang.utils.RedisUtil;
|
import co.yixiang.utils.RedisUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@ -67,8 +60,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
//import org.redisson.api.RQueue;
|
//import org.redisson.api.RQueue;
|
||||||
//import org.redisson.api.RedissonClient;
|
//import org.redisson.api.RedissonClient;
|
||||||
//import org.apache.webservice.config.annotation.Service;
|
//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.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.core.metadata.OrderItem;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
||||||
import javax.jws.WebService;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,7 +3,6 @@ package co.yixiang.modules.task;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import co.yixiang.modules.order.entity.YxStoreOrder;
|
import co.yixiang.modules.order.entity.YxStoreOrder;
|
||||||
import co.yixiang.modules.order.service.YxStoreOrderService;
|
import co.yixiang.modules.order.service.YxStoreOrderService;
|
||||||
import co.yixiang.redisson.ExecuteJob;
|
|
||||||
import co.yixiang.utils.BeanUtil;
|
import co.yixiang.utils.BeanUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -1,34 +1,33 @@
|
|||||||
package co.yixiang.redisson;
|
package co.yixiang.modules.task;
|
||||||
|
|
||||||
import org.redisson.api.RBlockingQueue;
|
import org.redisson.api.RDelayedQueue;
|
||||||
import org.redisson.api.RDelayedQueue;
|
import org.redisson.api.RQueue;
|
||||||
import org.redisson.api.RQueue;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
/**
|
||||||
/**
|
* Created by kl on 2018/7/20.
|
||||||
* Created by kl on 2018/7/20.
|
* Content :订单延时job服务
|
||||||
* Content :订单延时job服务
|
*/
|
||||||
*/
|
@Component
|
||||||
@Component
|
public class DelayJobService {
|
||||||
public class DelayJobService {
|
|
||||||
|
@Autowired
|
||||||
@Autowired
|
private RedissonClient client;
|
||||||
private RedissonClient client;
|
|
||||||
|
/**
|
||||||
/**
|
* 添加超时任务到redis队列
|
||||||
* 添加超时任务到redis队列
|
* @param job 任务
|
||||||
* @param job 任务
|
* @param delay 超时时间
|
||||||
* @param delay 超时时间
|
*/
|
||||||
*/
|
public void submitJob(Map<String,Object> job, Long delay){
|
||||||
public void submitJob(Map<String,Object> job, Long delay){
|
RQueue<Map<String,Object>> blockingQueue = client.getQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS);
|
||||||
RQueue<Map<String,Object>> blockingQueue = client.getQueue(JobTimer.CUSTOMER_JOB_TIMER_JOBS);
|
RDelayedQueue<Map<String,Object>> delayedQueue = client.getDelayedQueue(blockingQueue);
|
||||||
RDelayedQueue<Map<String,Object>> delayedQueue = client.getDelayedQueue(blockingQueue);
|
delayedQueue.offer(job,delay,TimeUnit.MILLISECONDS);
|
||||||
delayedQueue.offer(job,delay,TimeUnit.MILLISECONDS);
|
delayedQueue.destroy();
|
||||||
delayedQueue.destroy();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
@ -1,12 +1,12 @@
|
|||||||
package co.yixiang.redisson;
|
package co.yixiang.modules.task;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by kl on 2018/7/20.
|
* Created by kl on 2018/7/20.
|
||||||
* Content :延时job执行器接口
|
* Content :延时job执行器接口
|
||||||
*/
|
*/
|
||||||
public interface ExecuteJob {
|
public interface ExecuteJob {
|
||||||
|
|
||||||
void execute(Map<String,Object> job);
|
void execute(Map<String,Object> job);
|
||||||
}
|
}
|
@ -1,64 +1,64 @@
|
|||||||
package co.yixiang.redisson;
|
package co.yixiang.modules.task;
|
||||||
|
|
||||||
import org.redisson.api.RBlockingQueue;
|
import org.redisson.api.RBlockingQueue;
|
||||||
import org.redisson.api.RDelayedQueue;
|
import org.redisson.api.RDelayedQueue;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 消费已经到点的延时job服务,通过job参数调用业务执行器实现
|
* 消费已经到点的延时job服务,通过job参数调用业务执行器实现
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class JobTimer {
|
public class JobTimer {
|
||||||
|
|
||||||
static final String CUSTOMER_JOB_TIMER_JOBS = "customer_job_timer_jobs";
|
static final String CUSTOMER_JOB_TIMER_JOBS = "customer_job_timer_jobs";
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedissonClient client;
|
private RedissonClient client;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ExecuteJob service;
|
private ExecuteJob service;
|
||||||
|
|
||||||
ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2);
|
ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2);
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void startJobTimer() {
|
public void startJobTimer() {
|
||||||
RBlockingQueue<Map<String,Object>> blockingQueue = client.getBlockingQueue(CUSTOMER_JOB_TIMER_JOBS);
|
RBlockingQueue<Map<String,Object>> blockingQueue = client.getBlockingQueue(CUSTOMER_JOB_TIMER_JOBS);
|
||||||
RDelayedQueue<Map<String,Object>> delayedQueue = client.getDelayedQueue(blockingQueue);
|
RDelayedQueue<Map<String,Object>> delayedQueue = client.getDelayedQueue(blockingQueue);
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
Map<String,Object> job = blockingQueue.take();
|
Map<String,Object> job = blockingQueue.take();
|
||||||
executorService.execute(new ExecutorTask(job));
|
executorService.execute(new ExecutorTask(job));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
try {
|
try {
|
||||||
TimeUnit.SECONDS.sleep(60);
|
TimeUnit.SECONDS.sleep(60);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}finally {
|
}finally {
|
||||||
delayedQueue.destroy();
|
delayedQueue.destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
class ExecutorTask implements Runnable {
|
class ExecutorTask implements Runnable {
|
||||||
|
|
||||||
|
|
||||||
private Map<String,Object> delayJob;
|
private Map<String,Object> delayJob;
|
||||||
|
|
||||||
public ExecutorTask(Map<String,Object> delayJob) {
|
public ExecutorTask(Map<String,Object> delayJob) {
|
||||||
this.delayJob = delayJob;
|
this.delayJob = delayJob;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
service.execute(delayJob);
|
service.execute(delayJob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user