Commit 9e4c89ee authored by yanzg's avatar yanzg

将源码打包进jar包

parent 13831a3a
......@@ -45,4 +45,5 @@ public final class SystemContants {
* 设置有效期
*/
public static final long DAY_UNIT = 1000L * 60 * 60 * 24;
public static final String SYSTEM = "SYSTEM";
}
......@@ -3,12 +3,10 @@ package com.yanzuoguang.redis.mq;
import com.alibaba.fastjson.TypeReference;
import com.rabbitmq.client.Channel;
import com.yanzuoguang.mq.service.MqService;
import com.yanzuoguang.redis.PlanContains;
import com.yanzuoguang.redis.PlanInfo;
import com.yanzuoguang.redis.service.PlanService;
import com.yanzuoguang.util.helper.JsonHelper;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
......@@ -46,7 +44,6 @@ public class PlanConsumer implements InitializingBean {
* @param message 消息体
* @param channel 连接频道
*/
@RabbitListener(queues = {PlanContains.YZG_PLAN_PLAN})
public void plan(String json, Message message, Channel channel) {
try {
PlanInfo<String> timeNew = JsonHelper.deserialize(json, new TypeReference<PlanInfo<String>>() {
......
......@@ -6,13 +6,14 @@ import com.yanzuoguang.mq.vo.QueueVo;
import com.yanzuoguang.redis.PlanContains;
import com.yanzuoguang.redis.PlanInfo;
import com.yanzuoguang.redis.PlanLevelNamespace;
import com.yanzuoguang.redis.vo.PlanConfigVo;
import com.yanzuoguang.util.helper.JsonHelper;
import com.yanzuoguang.util.helper.StringHelper;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
import org.springframework.stereotype.Component;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
/**
* 订单消息队列
......@@ -23,40 +24,43 @@ import java.util.List;
public class PlanProcedure {
private final MqService mqService;
private final List<PlanLevelNamespace> planLevelNamespaceList;
private final Set<String> planLevelQueueNames = new LinkedHashSet<>();
public PlanProcedure(MqService mqService, List<PlanLevelNamespace> planLevelNamespaceList) {
this.mqService = mqService;
this.planLevelNamespaceList = planLevelNamespaceList;
planLevelNamespaceList.forEach(k -> {
planLevelQueueNames.add(getQueueName(k));
});
}
public void initQueue(ChannelAwareMessageListener messageListener) {
// 库存任务
planLevelNamespaceList.forEach(k -> {
String queueName = getQueueName(k);
planLevelQueueNames.forEach(k -> {
// 创建队列,注册回调
mqService.createQueue(new QueueVo(queueName));
mqService.createQueue(new QueueVo(k));
// 应用程序级的任务交给队列处理
mqService.setQueueConsumer(queueName, messageListener);
mqService.setQueueConsumer(k, messageListener);
});
}
/**
* 执行库存任务
*
* @param req 待执行的任务
* @param planLevelNamespace 任务命名空间级别
* @param req 待执行的任务
*/
public void plan(PlanConfigVo config, PlanInfo<?> req) {
plan(config, JsonHelper.serialize(req));
public void plan(PlanLevelNamespace planLevelNamespace, PlanInfo<?> req) {
plan(planLevelNamespace, JsonHelper.serialize(req));
}
/**
* 执行库存任务
*
* @param json 执行的任务
* @param planLevelNamespace 任务命名空间级别
* @param json 执行的任务
*/
private void plan(PlanConfigVo config, String json) {
String queueName = getQueueName(config.getPlanLevelNamespace());
private void plan(PlanLevelNamespace planLevelNamespace, String json) {
String queueName = getQueueName(planLevelNamespace);
mqService.message(new MessageVo(queueName, json, 0));
}
......
......@@ -18,6 +18,10 @@ import java.util.*;
*/
@Component
public class PlanRegister {
/**
* 默认命名空间处理
*/
private final Map<PlanLevelType, PlanLevelNamespaceDefault> mapLevelTypeNamespaceDefault = new HashMap<>();
/**
* 所有的任务
*/
......@@ -27,11 +31,19 @@ public class PlanRegister {
*/
private final PlanStartDefault planStartDefault = new PlanStartDefault();
private final PlanLevelDefault planLevelDefault = new PlanLevelDefault();
private final Map<PlanLevelType, PlanLevelNamespaceDefault> mapLevelTypeNamespaceDefault = new HashMap<>();
public PlanRegister(Optional<List<Plan>> plans, List<PlanLevelNamespaceDefault> planLevelNamespaceDefaults) {
// 先注册默认命名空间处理
planLevelNamespaceDefaults.forEach(k -> {
PlanLevelType level = k.getLevel();
if (mapLevelTypeNamespaceDefault.containsKey(level)) {
Log.error(PlanRegister.class, "默认命名级别处理%s已经存在!", level.getName());
return;
}
mapLevelTypeNamespaceDefault.put(level, k);
});
// 再注册所有任务
plans.ifPresent(planList -> planList.forEach(this::register));
planLevelNamespaceDefaults.forEach(k -> mapLevelTypeNamespaceDefault.put(k.getLevel(), k));
}
/**
......@@ -62,35 +74,23 @@ public class PlanRegister {
if (plan == null) {
return;
}
// 任务级别
PlanLevel planLevel = getPlanLevel(plan);
// 任务命名空间
PlanLevelNamespace planLevelNamespace = getPlanLevelNamespace(plan, planLevel);
if (planLevelNamespace == null) {
return;
}
// 任务开启程序默认开启
PlanStart planStart = getPlanStart(plan);
// 任务关键字
PlanName planName = getPlanName(plan);
// 任务配置信息
PlanConfigVo planConfigVo = new PlanConfigVo(plan, planName, planStart, planLevel, planLevelNamespace);
PlanConfigVo planConfigVo = new PlanConfigVo(plan, planName, planStart, planLevelNamespace);
// 任务配置
mapPlan.put(planName.getPlanKey(), planConfigVo);
}
/**
* 任务在应用程序打开时是否运行
*
* @param plan 任务
* @return 任务在应用程序打开时是否运行的配置
*/
private PlanStart getPlanStart(Plan plan) {
PlanStart planStart;
if (plan instanceof PlanStart) {
planStart = (PlanStart) plan;
} else {
planStart = planStartDefault;
}
return planStart;
}
/**
* 获取任务的级别
*
......@@ -107,22 +107,6 @@ public class PlanRegister {
return planLevel;
}
/**
* 获取任务名称
*
* @param plan 任务
* @return 任务名称
*/
private PlanName getPlanName(Plan plan) {
PlanName planName;
if (plan instanceof PlanName) {
planName = (PlanName) plan;
} else {
planName = new PlanNameDefault(plan.getClass());
}
return planName;
}
/**
* 获取应用名称
*
......@@ -141,4 +125,36 @@ public class PlanRegister {
Log.error(plan.getClass(), "没有实现 PlanLevelNamespace 接口,或者没有默认级别处理程序");
return null;
}
/**
* 任务在应用程序打开时是否运行
*
* @param plan 任务
* @return 任务在应用程序打开时是否运行的配置
*/
private PlanStart getPlanStart(Plan plan) {
PlanStart planStart;
if (plan instanceof PlanStart) {
planStart = (PlanStart) plan;
} else {
planStart = planStartDefault;
}
return planStart;
}
/**
* 获取任务名称
*
* @param plan 任务
* @return 任务名称
*/
private PlanName getPlanName(Plan plan) {
PlanName planName;
if (plan instanceof PlanName) {
planName = (PlanName) plan;
} else {
planName = new PlanNameDefault(plan.getClass());
}
return planName;
}
}
......@@ -31,6 +31,9 @@ public class PlanService {
private final PlanRegister planRegister;
private final PlanProcedure planProcedure;
/**
* 用于判断任务是否已经执行,上次执行时间
*/
@CreateCache(name = PlanContains.YZG_PLAN_PLAN, expire = 10, timeUnit = TimeUnit.DAYS, cacheType = CacheType.REMOTE)
private Cache<String, PlanInfo<String>> cachePlan;
......@@ -53,7 +56,7 @@ public class PlanService {
return;
}
// 开始运行任务
planProcedure.plan(config, planInfo);
planProcedure.plan(config.getPlanLevelNamespace(), planInfo);
});
}
......
package com.yanzuoguang.redis.vo;
import com.yanzuoguang.redis.*;
import com.yanzuoguang.redis.Plan;
import com.yanzuoguang.redis.PlanLevelNamespace;
import com.yanzuoguang.redis.PlanName;
import com.yanzuoguang.redis.PlanStart;
/**
* 任务配置
......@@ -20,10 +23,6 @@ public class PlanConfigVo {
* 是否立即运行
*/
private final PlanStart planStart;
/**
* 应用程序级别
*/
private final PlanLevel planLevel;
/**
* 应用程序级别命名空间
*/
......@@ -32,11 +31,9 @@ public class PlanConfigVo {
public PlanConfigVo(Plan plan,
PlanName planName,
PlanStart planStart,
PlanLevel planLevel,
PlanLevelNamespace planLevelNamespace) {
this.plan = plan;
this.planName = planName;
this.planLevel = planLevel;
this.planStart = planStart;
this.planLevelNamespace = planLevelNamespace;
}
......@@ -53,10 +50,6 @@ public class PlanConfigVo {
return planStart;
}
public PlanLevel getPlanLevel() {
return planLevel;
}
public PlanLevelNamespace getPlanLevelNamespace() {
return planLevelNamespace;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment