From 0a857b88579ad262821ce0da04687a6dba713f93 Mon Sep 17 00:00:00 2001 From: alwaysfrin <39822157+alwaysfrin@users.noreply.github.com> Date: Sat, 16 Mar 2019 17:25:30 +0800 Subject: [PATCH] =?UTF-8?q?schedule=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8Cfallback=E7=86=94=E6=96=AD=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=E6=94=B9=E4=B8=BAfactory=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/controller/DemoCloudController.java | 4 +- .../controller/DemoScheduleController.java | 107 +++++++++++++++------ .../core/apiservice/mq/I3CoreQueueConfig.java | 8 ++ .../core/apiservice/mq/I3CoreQueueReceiver.java | 34 +++++++ .../core/apiservice/schedulejob/DemoCloudJob.java | 29 ++++++ .../schedulejob/wms/WmsDualTransStockJob.java | 4 - .../i3plus/core/apiservice/websocket/TestMain.java | 36 +++++++ 7 files changed, 188 insertions(+), 34 deletions(-) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java index a9770db..971b16c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java @@ -46,7 +46,7 @@ public class DemoCloudController { @GetMapping(value="/test") @ApiOperation(value="core测试",notes = "core测试") public BaseResultBean testCore(String test) { - LOGGER.info("{}:{},【impp-core接受数据】{}",ipAddress,serverPort,test); + LOGGER.info("iWmsDemoCloud:{},ip:{},port:{},【impp-core接受数据】{}",iWmsDemoCloud,ipAddress,serverPort,test); //return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return BaseResultBean.buildBaseResultBean(true,""); } @@ -54,7 +54,7 @@ public class DemoCloudController { @GetMapping(value="/test-wms") @ApiOperation(value="wms测试",notes = "wms测试") public ResultBean testWms(String test) { - LOGGER.info("【{}:{},impp-core接受数据 -> wms】{}",ipAddress,serverPort,test); + LOGGER.info("iWmsDemoCloud:{},ip:{},port:{},【impp-core接受数据】{}",iWmsDemoCloud,ipAddress,serverPort,test); BaseResultBean result = iWmsDemoCloud.testWms(test); if(result.isSuccess()){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java index 4ed2ae2..65b2493 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java @@ -1,6 +1,8 @@ package cn.estsh.i3plus.core.apiservice.controller; +import cn.estsh.i3plus.icloud.wms.sdk.IWmsScheduleJobCloud; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.quartz.ScheduleTool; @@ -33,74 +35,123 @@ public class DemoScheduleController extends CoreBaseController{ @Autowired private ScheduleTool scheduleTool; + @Autowired + private IWmsScheduleJobCloud wmsScheduleJobCloud; + @GetMapping(value="/list-task") @ApiOperation(value="查询定时任务",notes="查询所有定时任务") - public ResultBean listTask(){ - List taskList = scheduleTool.queryJobList(); - for(TaskInfo ti : taskList){ - System.out.println(ti); + public ResultBean listTask(int sourceType){ + List taskList = null; + if(sourceType == 1) { + //本地任务 + taskList = ScheduleTool.queryJobList(scheduleTool.getScheduler()); + if(taskList != null) { + for (TaskInfo ti : taskList) { + LOGGER.info("任务:{}",ti); + } + }else{ + LOGGER.info("任务列表为空"); + } + }else if(sourceType == 2){ + //wms任务 + BaseResultBean baseResult = wmsScheduleJobCloud.listTask(); + LOGGER.info("任务数量:{}",baseResult.getResultList().size()); + taskList = baseResult.getResultList(); + if (taskList != null) { + for (TaskInfo ti : taskList) { + LOGGER.info("任务:{}",ti); + } + } else { + LOGGER.info("任务列表为空"); + } } - return new ResultBean(true,""); + return new ResultBean(true,taskList); } @GetMapping(value="/add-task") @ApiOperation(value="添加定时任务",notes="添加定时任务") - public ResultBean addTask(String packageName,String className,String jobName,String jobGroup,String cronExpression){ - //String packageName = "cn.estsh.impp.framework.boot.quartz.job"; - //String className = "ImppJob"; - - scheduleTool.addJob(new TaskInfo(packageName,className,jobName,jobGroup,cronExpression,"测试任务")); + public ResultBean addTask(int sourceType, + String packageName,String className,String jobName,String jobGroup,String cronExpression){ + if(sourceType == 1) { + scheduleTool.addJob(new TaskInfo(packageName,className,jobName,jobGroup,cronExpression,"测试任务")); + }else if(sourceType == 2){ + wmsScheduleJobCloud.addTask(packageName,className,jobName,jobGroup,cronExpression,"wms新任务"); + } return new ResultBean(true,""); } @GetMapping(value="/delete-task") @ApiOperation(value="删除定时任务",notes="删除定时任务") - public ResultBean deleteTask(String jobName,String jobGroup){ - scheduleTool.deleteJob(jobName,jobGroup); + public ResultBean deleteTask(int sourceType,String jobName,String jobGroup){ + if(sourceType == 1) { + scheduleTool.deleteJob(jobName,jobGroup); + }else if(sourceType == 2){ + wmsScheduleJobCloud.deleteTask(jobName,jobGroup); + } - return new ResultBean(true,""); + return new ResultBean(true); } @GetMapping(value="/pause-task") @ApiOperation(value="暂停定时任务",notes="暂停定时任务") - public ResultBean pauseJob(String jobName,String jobGroup){ - scheduleTool.pauseJob(jobName,jobGroup); + public ResultBean pauseJob(int sourceType,String jobName,String jobGroup){ + if(sourceType == 1) { + scheduleTool.pauseJob(jobName,jobGroup); + }else if(sourceType == 2){ + wmsScheduleJobCloud.pauseJob(jobName,jobGroup); + } - return new ResultBean(true,""); + return new ResultBean(true); } @GetMapping(value="/resume-task") @ApiOperation(value="继续定时任务",notes="继续定时任务") - public ResultBean resumeJob(String jobName,String jobGroup){ - scheduleTool.resumeJob(jobName,jobGroup); + public ResultBean resumeJob(int sourceType,String jobName,String jobGroup){ + if(sourceType == 1) { + scheduleTool.resumeJob(jobName,jobGroup); + }else if(sourceType == 2){ + wmsScheduleJobCloud.resumeJob(jobName,jobGroup); + } - return new ResultBean(true,""); + return new ResultBean(true); } @GetMapping(value="/exceute-task") @ApiOperation(value="立即执行定时任务",notes="立即执行定时任务") - public ResultBean excuteJob(String jobName,String jobGroup){ - scheduleTool.executeJob(jobName,jobGroup); + public ResultBean excuteJob(int sourceType,String jobName,String jobGroup){ + if(sourceType == 1) { + scheduleTool.executeJob(jobName,jobGroup); + }else if(sourceType == 2){ + wmsScheduleJobCloud.excuteJob(jobName,jobGroup); + } - return new ResultBean(true,""); + return new ResultBean(true); } @GetMapping(value="/stand-by-schedule") @ApiOperation(value="定时器待机",notes="定时器待机") - public ResultBean restartJob(String jobName,String jobGroup){ - scheduleTool.standBySchedule(); + public ResultBean restartJob(int sourceType,String jobName,String jobGroup){ + if(sourceType == 1) { + scheduleTool.standBySchedule(); + }else if(sourceType == 2){ + wmsScheduleJobCloud.standBySchedule(); + } - return new ResultBean(true,""); + return new ResultBean(true); } @GetMapping(value="/start-schedule") @ApiOperation(value="启动定时器",notes="启动定时器") - public ResultBean startSchedule(String jobName,String jobGroup){ - scheduleTool.startSchedule(); + public ResultBean startSchedule(int sourceType,String jobName,String jobGroup){ + if(sourceType == 1) { + scheduleTool.startSchedule(); + }else if(sourceType == 2){ + wmsScheduleJobCloud.startSchedule(); + } - return new ResultBean(true,""); + return new ResultBean(true); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java index ae90aa1..3ed39bb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java @@ -63,4 +63,12 @@ public class I3CoreQueueConfig { //LOGGER.info("【DEMO_RETURN_QUEUE队列】"); return new Queue(DEMO_RETURN_QUEUE); } + + //测试wms微服队列 + public static final String DEMO_CLOUD_WMS = "DEMO_CLOUD_WMS"; + @Bean + public Queue getDemoCloudWmsQueue() throws Exception { + //LOGGER.info("【DEMO_CLOUD_WMS】"); + return new Queue(DEMO_CLOUD_WMS); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueReceiver.java index 2636dba..78dab44 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueReceiver.java @@ -1,10 +1,13 @@ package cn.estsh.i3plus.core.apiservice.mq; +import cn.estsh.i3plus.icloud.wms.sdk.IWmsDemoCloud; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import com.rabbitmq.client.Channel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; @@ -20,6 +23,9 @@ import java.io.IOException; public class I3CoreQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(I3CoreQueueReceiver.class); + @Autowired + IWmsDemoCloud iWmsDemoCloud; + /** * 系统邮件处理队列 * @param msg @@ -46,6 +52,34 @@ public class I3CoreQueueReceiver { } } + /** + * 微服处理队列 + * @param msg + * @param channel + * @param message + * 发送:rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_QUEUE, new SysMessage(....)); + */ + @RabbitListener(queues = I3CoreQueueConfig.DEMO_CLOUD_WMS) + public void processCloud(String msg, Channel channel, Message message) { + try { + LOGGER.info("【MQ-DEMO_CLOUD_WMS】数据接收成功:{}",msg); + BaseResultBean result = iWmsDemoCloud.testWms(msg); + LOGGER.info("微服返回结果:{}",result); + + //信息已处理 + channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); + } catch (IOException e) { + LOGGER.error("【MQ-DEMO_CLOUD_WMS】处理出错:{}",e.getMessage(),e); + //丢弃这条消息 + try { + // 未成功处理,重新发送 + channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + /********************* 消息队列处理demo *******************/ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java new file mode 100644 index 0000000..3fcb9f8 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoCloudJob.java @@ -0,0 +1,29 @@ +package cn.estsh.i3plus.core.apiservice.schedulejob; + +import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import io.swagger.annotations.ApiOperation; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @Description : + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2019-03-12 17:51 + * @Modify: + **/ +@ApiOperation("测试微服定时任务demo") +public class DemoCloudJob extends BaseImppScheduleJob { + public static final Logger LOGGER = LoggerFactory.getLogger(DemoJob.class); + + public DemoCloudJob() { + super(DemoJob.class,"测试微服定时任务demo"); + } + + @Override + public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + System.out.println("==============测试微服定时任务demo==========="); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/wms/WmsDualTransStockJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/wms/WmsDualTransStockJob.java index f12127b..b269d7b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/wms/WmsDualTransStockJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/wms/WmsDualTransStockJob.java @@ -24,13 +24,9 @@ public class WmsDualTransStockJob extends BaseImppScheduleJob { super(WmsDualTransStockJob.class,"定时处理库存移动单信息"); } - @Autowired - private IWmsScheduleJobCloud scheduleJobCloud; - @Override public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) { System.out.println("定时任务被执行"); LOGGER.info("projectName:{},port:{}",applicationProperties.getApplicationName(),applicationProperties.getServerPort()); - scheduleJobCloud.dualMovementJob(); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/TestMain.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/TestMain.java index fe7fc2d..17a8767 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/TestMain.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/TestMain.java @@ -1,8 +1,11 @@ package cn.estsh.i3plus.core.apiservice.websocket; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang3.RandomStringUtils; +import java.util.Random; + /** * @Description : * @Reference : @@ -16,5 +19,38 @@ public class TestMain { System.out.println(RandomStringUtils.random(15, true, false)); // StringEscapeUtils.escapeHtml(); + /*long workerIdBits = 5L; + long maxWorkerId = -1L ^ (-1L << workerIdBits); + System.out.println("5 --> "+maxWorkerId); + + workerIdBits = 6L; + maxWorkerId = -1L ^ (-1L << workerIdBits); + System.out.println("6 --> "+maxWorkerId); + + workerIdBits = 8L; + maxWorkerId = -1L ^ (-1L << workerIdBits); + System.out.println("8 --> " + maxWorkerId);*/ + + int wId = new Random().nextInt(29) + 1; + System.out.println("random id -> "+wId); + SnowflakeIdMaker m = new SnowflakeIdMaker(wId,3); + m = new SnowflakeIdMaker(wId,3); + + int i = 0; + long id; + int c = 0; + + long l1 = System.currentTimeMillis(); + while(i < 1000){ + if(m.nextId() < 0) { + System.out.println("======="+m.nextId()); + c++; + }else{ + //System.out.println(m.nextId()); + } + i++; + } + System.out.println("耗时:" + (System.currentTimeMillis()-l1)); + System.out.println("====end====error:" + c); } }