From a18efc36f65ad32be5628f19c3499241e477f279 Mon Sep 17 00:00:00 2001 From: "yunhao.wang" Date: Thu, 28 Feb 2019 11:50:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BC=98=E5=8C=96=20impp?= =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=98=9F=E5=88=97=E9=9D=9E=E7=A9=BA=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=20=E5=8D=95=E5=8F=B7=E7=AE=A1=E7=90=86=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/iservice/busi/ISysLogSystemService.java | 14 ++- .../core/api/iservice/busi/ISysToolService.java | 17 +++- .../apiservice/controller/busi/TestController.java | 100 +++++++++++---------- .../core/apiservice/controller/busi/Text.java | 77 +++++++++------- .../estsh/i3plus/core/apiservice/dao/ITestDao.java | 9 +- .../core/apiservice/daoimpl/TestDaoImpl.java | 25 +++--- .../apiservice/mq/MessageLetterQueueReceiver.java | 59 ++++++------ .../apiservice/mq/MessageMailQueueReceiver.java | 4 +- .../core/apiservice/mq/ScheduleQueueReceiver.java | 2 +- .../serviceimpl/busi/SysLogSystemService.java | 20 +++-- .../serviceimpl/busi/SysToolService.java | 39 +++++--- 11 files changed, 209 insertions(+), 157 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java index 9313c1a..3e895f5 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java @@ -6,7 +6,6 @@ import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; import io.swagger.annotations.ApiOperation; import java.util.List; -import java.util.Map; /** * @Description : 系统日志服务接口 @@ -24,7 +23,7 @@ public interface ISysLogSystemService { void insertSysLogBatch(int num,int waitTime); @ApiOperation(value = "删除日志",notes = "删除日志") - void deleteSysLogSystemById(Long id); + long deleteSysLogSystemById(Long id); @ApiOperation(value = "查询全部日志",notes = "查询全部日志") List listSysLogSystem(); @@ -36,5 +35,14 @@ public interface ISysLogSystemService { ListPager querySysLogSystemByPager(SysLogSystem logSystem, Pager pager); @ApiOperation(value = "系统日志批量删除",notes = "系统日志批量删除") - void deleteSysLogSystemByIds(Long[] ids); + long deleteSysLogSystemByIds(Long[] ids); + + /** + * 压力测试 + * @param min + * @param max + * @return + */ + @ApiOperation(value = "系统日志按id区间查询",notes = "系统日志按id区间查询") + List findSysLogSystemByIdInterval(long min, long max); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java index 572e371..96447a9 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java @@ -3,7 +3,6 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SysTool; -import cn.estsh.i3plus.pojo.platform.bean.SysToolType; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -74,14 +73,14 @@ public interface ISysToolService { * @param id */ @ApiOperation(value = "删除硬件信息",notes = "根据 ID 删除硬件信息") - void deleteSysToolById(Long id); + int deleteSysToolById(Long id); /** * 批量删除硬件 * @param ids */ @ApiOperation(value = "删除硬件信息",notes = "根据 ID 批量删除硬件信息") - void deleteSysToolByIds(Long[] ids); + int deleteSysToolByIds(Long[] ids); /** * 批量修改硬件状态 @@ -89,11 +88,21 @@ public interface ISysToolService { * @param status */ @ApiOperation(value = "更新设备信息",notes = "根据 ID 批量修改硬件状态信息") - void updateSysToolStatusByIds(Long[] ids,Integer status); + int updateSysToolStatusByIds(Long[] ids,Integer status); /** + * 压力测试 * 查询指定数量设备信息 */ @ApiOperation(value = "查询指定数量设备信息",notes = "查询指定数量设备信息") List findSysToolByTop(int topNum); + + /** + * 压力测试 + * @param min + * @param max + * @return + */ + @ApiOperation(value = "查询指定数量设备信息",notes = "查询指定数量设备信息") + List findSysToolByIdInterval(long min,long max); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java index efcbd32..984527d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java @@ -1,10 +1,8 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.BaseBean; -import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -13,7 +11,6 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; -import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.eureka.EurekaClientHealthCheck; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -22,7 +19,6 @@ import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; @@ -30,18 +26,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.persistence.EntityManager; -import java.lang.reflect.Method; -import java.lang.reflect.Parameter; -import java.util.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; /** - * @Description : + * @Description : IMPP性能测试 * @Reference : * @Author : yunhao * @CreateDate : 2019-02-19 11:29 @@ -140,12 +136,11 @@ public class TestController { // 测试cpu性能 if (cpu) { for (int i = 0; i < num; i++) { - TestThread th1 = new TestThread(piLength); - th1.start(); + System.out.println(ComputePi.computePi(piLength)); } } - return ResultBean.success("查询成功").setResultObject("耗时:" + (System.currentTimeMillis() - time)) + return ResultBean.success("查询成功 耗时:" + (System.currentTimeMillis() - time)) .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -167,7 +162,7 @@ public class TestController { */ @GetMapping(value = "/test-db") @ApiOperation(value = "数据库操作测试", notes = "数据库操作测试") - public ResultBean testDBCRUD(int num, boolean mongo, boolean insert, boolean update, boolean batchUpdate, boolean delete, boolean batchDelete, int waitTime) { + public ResultBean testDBCRUD(int num, boolean mongo, boolean insert, boolean update, boolean batchUpdate, boolean delete, boolean batchDelete,long min,long max) { try { long time = System.currentTimeMillis(); Pager page = new Pager(); @@ -176,12 +171,15 @@ public class TestController { List list; SysTool sysTool; SysLogSystem sysLogSystem; + int insertAffect = 0; + int updateAffect = 0; + long deleteAffect = 0; long t1 = System.currentTimeMillis(); // 新增数据 if (insert) { - for (int i = 0; i < num * 1000; i++) { + for (int i = 0; i < num; i++) { t1 = System.currentTimeMillis(); if (!mongo) { sysTool = new SysTool(); @@ -192,8 +190,6 @@ public class TestController { sysTool.setToolDescription("描述新增测试"); sysToolService.insertSysTool(sysTool); - - this.wait(waitTime); } else { sysLogSystem = new SysLogSystem(); sysLogSystem.setLogClass("新增测试class"); @@ -207,20 +203,18 @@ public class TestController { sysLogSystem.setLogTitle("新增测试"); syslogSystemService.insertSysLogSystem(sysLogSystem); - - this.wait(waitTime); } - LOGGER.info("插入耗时:" + (System.currentTimeMillis() - t1) + ",idx:" + i); + insertAffect++; } } if (update || delete) { // 查询批量修改或删除的数据 if (mongo) { - list = syslogSystemService.querySysLogSystemByPager(null, page).getObjectList(); + list = syslogSystemService.findSysLogSystemByIdInterval(min,max); } else { - list = sysToolService.findSysToolByTop(num); + list = sysToolService.findSysToolByIdInterval(min,max); } // 是否进行修改测试,并判断进行批量或逐次修改 @@ -229,10 +223,10 @@ public class TestController { for (int i = 0; i < num; i++) { ids[i] = ((SysTool) list.get(i)).getId(); } - sysToolService.updateSysToolStatusByIds(ids, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + updateAffect = sysToolService.updateSysToolStatusByIds(ids, (int) (Math.random() * 1000)); } else if (!mongo && update) { - for (Object obj : list) { - sysTool = (SysTool) obj; + for (int i = 0; i < num; i++) { + sysTool = (SysTool) list.get(i); sysTool.setName("修改测试" + System.currentTimeMillis()); sysTool.setToolTypeId(1073140662133723136L); sysTool.setToolIp("192.168.1.35"); @@ -254,25 +248,26 @@ public class TestController { } } if (mongo) { - syslogSystemService.deleteSysLogSystemByIds(ids); + deleteAffect = syslogSystemService.deleteSysLogSystemByIds(ids); } else { - sysToolService.deleteSysToolByIds(ids); + deleteAffect = sysToolService.deleteSysToolByIds(ids); } } else if (delete) { - for (Object obj : list) { + for (int i = 0; i < num; i++) { if (mongo) { - sysLogSystem = (SysLogSystem) obj; - syslogSystemService.deleteSysLogSystemById(sysLogSystem.getId()); + sysLogSystem = (SysLogSystem) list.get(i); + deleteAffect += syslogSystemService.deleteSysLogSystemById(sysLogSystem.getId()); } else { - sysTool = (SysTool) obj; - sysToolService.deleteSysToolById(sysTool.getId()); + sysTool = (SysTool) list.get(i); + deleteAffect += sysToolService.deleteSysToolById(sysTool.getId()); } } } } - return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + num) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",新增数据量:" + insertAffect + + ",修改影响量" + updateAffect + ",删除影响量:" + deleteAffect) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -280,7 +275,6 @@ public class TestController { } } - /** * 数据库操作测试 * @@ -292,9 +286,6 @@ public class TestController { public ResultBean dateInsert(int num, boolean mongo, int waitTime) { try { long time = System.currentTimeMillis(); - SysTool sysTool; - SysLogSystem sysLogSystem; - long t1 = System.currentTimeMillis(); // 新增数据 if (!mongo) { @@ -304,7 +295,7 @@ public class TestController { } return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + num) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -384,7 +375,7 @@ public class TestController { } return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + list.size()) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -437,7 +428,7 @@ public class TestController { } return ResultBean.success("调用完成 耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + list.size()) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -486,7 +477,7 @@ public class TestController { case 2: deptList = new ArrayList<>(); - for (int j = 0; j < 300; j++) { + for (int j = 0; j < 20; j++) { sysDept = new SysDepartment(); sysDept.setName("部门名称"); sysDept.setDepartmentCode("部门code"); @@ -511,11 +502,18 @@ public class TestController { // 复杂对象 case 3: deptList = new ArrayList<>(); + for (int j = 0; j < 20; j++) { + sysDept = new SysDepartment(); + sysDept.setName("部门名称集合" + j); + sysDept.setDepartmentCode("部门集合code" + j); + sysDept.setParentNameRdd("集合" + j); + deptList.add(sysDept); + + } sysDept = new SysDepartment(); sysDept.setName("部门名称"); sysDept.setDepartmentCode("部门code"); sysDept.setParentNameRdd("上级部门名称"); - deptList.add(sysDept); sysDept.setChildList(deptList); @@ -553,7 +551,7 @@ public class TestController { } return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数量:" + list.size()) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)).setResultList(list); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -586,7 +584,7 @@ public class TestController { } return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time)) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -623,7 +621,7 @@ public class TestController { } return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数量:" + list.size()) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(new TestInfo(time)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -768,4 +766,16 @@ public class TestController { Thread.sleep(1); } + + @GetMapping(value = "/make-sql") + @ApiOperation(value = "生成sql脚本", notes = "生成sql脚本") + public void MakeSql(String path,int page,int pageSize){ + try { + for (int i = 0; i < page; i++) { + Text.printUsage(path,pageSize, i); + } + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java index 9c1499c..ad86ad6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java @@ -1,52 +1,61 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; -import java.lang.management.ManagementFactory; -import java.util.Random; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import org.apache.commons.lang3.RandomStringUtils; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; /** - * @Description : + * @Description : 性能测试 * @Reference : * @Author : yunhao * @CreateDate : 2019-02-19 11:41 * @Modify: **/ public class Text { + public static final String TEXT = "党的十八大提出,倡导富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育和践行社会主义核心价值观。富强、民主、文明、和谐是国家层面的价值目标,自由、平等、公正、法治是社会层面的价值取向,爱国、敬业、诚信、友善是公民个人层面的价值准则,这24个字是社会主义核心价值观的基本内容。"; - public static void main(String[] args) { + public static void printUsage(String path, int num, int index) throws IOException { - String name = ManagementFactory.getRuntimeMXBean().getName(); - System.out.println(name); -// get pid - String pid = name.split("@")[0]; - System.out.println("Pid is:" + pid); - for (int i = 0; i < 1; i++) { - TestThread th1 = new TestThread(i); - th1.start(); + File dir = new File(path+File.separator+"tool"+File.separator+"temp" + (index / 10)); + if (!dir.exists()) { + System.out.println(dir.mkdirs()); } - - -// System.out.println("Please input times: "); -// caculatePI(100000000); - } - - - public static void caculatePI(int countInSquarel) { - int countInCircle = 0, i, resulttimes; - double x, y; /* 坐标 */ - Random s = new Random(); - for (resulttimes = 0; resulttimes < 10; resulttimes++) { /* 输出十次结果 */ - for (i = 1; i <= countInSquarel; i++) { - x = s.nextDouble(); /* 在0~1之间产生一个随机x坐标 */ - y = s.nextDouble(); /* 在0~1之间产生一个随机y坐标 */ - if (caculateAcreage(x, y) <= 1.0) - countInCircle++; /* 统计落入单位圆中的点数 */ + File f = new File(path+File.separator+"tool"+File.separator+"temp" + (index / 10) + File.separator+"insert" + index + ".sql"); + FileWriter fw = new FileWriter(f); + BufferedWriter out = new BufferedWriter(fw); + try { + + SysTool sysTool; + StringBuffer sb; + SnowflakeIdMaker snf = new SnowflakeIdMaker(); + for (int i = 0; i < num; i++) { + sb = new StringBuffer(); + sb.append("insert into sys_tool (id,name,tool_type_name_rdd,tool_type_id,tool_ip,tool_port,tool_description) values "); + sysTool = new SysTool(); + sysTool.setId(snf.nextId() + System.currentTimeMillis()); + sysTool.setName(RandomStringUtils.random(10, TEXT)); + sysTool.setToolTypeNameRdd(RandomStringUtils.random(10, TEXT)); + sysTool.setToolTypeId(System.currentTimeMillis()); + sysTool.setToolIp(RandomStringUtils.random(10, TEXT)); + sysTool.setToolPort((int) (Math.random() * i)); + sysTool.setToolDescription(RandomStringUtils.random(10, TEXT)); + sysTool.setCreateDatetime(TimeTool.getNowTime(true)); + sysTool.setModifyDatetime(TimeTool.getNowTime(true)); + + sb.append("(" + sysTool.getId() + ",'" + sysTool.getName() + "','" + sysTool.getToolTypeNameRdd() + "'," + sysTool.getToolTypeId() + ",'" + + sysTool.getToolIp() + "'," + sysTool.getToolPort() + ",'" + sysTool.getToolDescription() + "');"); + out.write(sb.toString()); } - System.out.println("The result of pai is " + (double) countInCircle / countInSquarel * 4); /* 计算出π的值 */ - countInCircle = 0; + + } finally { + out.close(); } } - private static double caculateAcreage(double xPosition, double yPosition) { - return xPosition * xPosition + yPosition * yPosition; - } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java index 7d148b6..5c3e3f3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java @@ -7,7 +7,7 @@ import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; import java.util.List; /** - * @Description : + * @Description : 性能测试 * @Reference : * @Author : yunhao * @CreateDate : 2019-02-20 21:15 @@ -22,12 +22,5 @@ public interface ITestDao { */ void insertBatch(int num,int waitTime); - /** - * mongodb批量新增 - * @param num - * @param waitTime - */ - void insertMongoDBBatch(int num,int waitTime); - List queryToolAndToolType(Pager pager); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java index 2f9a560..4e0896e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.daoimpl; import cn.estsh.i3plus.core.apiservice.dao.ITestDao; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SysTool; @@ -11,11 +12,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.persistence.EntityManager; +import javax.persistence.Query; import java.util.List; -import java.util.Random; /** - * @Description : 多表测试 + * @Description : 性能测试 * @Reference : * @Author : yunhao * @CreateDate : 2019-02-20 21:17 @@ -35,8 +36,9 @@ public class TestDaoImpl implements ITestDao { long t1 = System.currentTimeMillis(); SysTool sysTool = new SysTool(); StringBuffer sb = new StringBuffer(); + sb.append("insert into sys_tool (id,name,tool_type_name_rdd,tool_type_id,tool_ip,tool_port,tool_description) values "); SnowflakeIdMaker snf = new SnowflakeIdMaker(); - for (int i = 0; i < num * 1000; i++) { + for (int i = 0; i < num * 100; i++) { sysTool = new SysTool(); sysTool.setId(snf.nextId() + System.currentTimeMillis()); sysTool.setName(RandomStringUtils.random(10, TEXT)); @@ -45,20 +47,17 @@ public class TestDaoImpl implements ITestDao { sysTool.setToolIp(RandomStringUtils.random(10, TEXT)); sysTool.setToolPort((int) (Math.random() * i)); sysTool.setToolDescription(RandomStringUtils.random(10, TEXT)); + sysTool.setCreateDatetime(TimeTool.getNowTime(true)); + sysTool.setModifyDatetime(TimeTool.getNowTime(true)); - sb.append("insert into sys_tool (id,name,tool_type_name_rdd,tool_type_id,tool_ip,tool_port,tool_description) "); - sb.append(" values("+sysTool.getId()+",'"+sysTool.getName()+"','"+sysTool.getToolTypeNameRdd()+"',"+sysTool.getToolTypeId()+",'" - +sysTool.getToolIp()+"',"+sysTool.getToolPort()+",'"+sysTool.getToolDescription()+"')"); + sb.append("("+sysTool.getId()+",'"+sysTool.getName()+"','"+sysTool.getToolTypeNameRdd()+"',"+sysTool.getToolTypeId()+",'" + +sysTool.getToolIp()+"',"+sysTool.getToolPort()+",'"+sysTool.getToolDescription()+"'),"); } - entityManager.createNativeQuery(sb.toString()); - LOGGER.info("插入耗时:" + (System.currentTimeMillis() - t1) ); - } - - @Override - public void insertMongoDBBatch(int num, int waitTime) { - + sb.deleteCharAt(sb.length() - 1); + Query sql = entityManager.createNativeQuery(sb.toString()); + LOGGER.info("插入耗时:" + (System.currentTimeMillis() - t1) + ",操作数:" + sql.executeUpdate()); } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java index 27cfec1..6fddb50 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java @@ -42,21 +42,27 @@ public class MessageLetterQueueReceiver { /** * 站内信处理队列 + * * @param msg * @param channel - * @param message - * 发送:rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_QUEUE, new SysMessage(....)); + * @param message 发送:rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_QUEUE, new SysMessage(....)); */ @RabbitListener(queues = PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE) public void processImppMessage(SysMessage msg, Channel channel, Message message) { try { - LOGGER.info("【MQ-IMPP_MESSAGE_LETTER_QUEUE】数据接收成功:{}",msg); + LOGGER.info("【MQ-IMPP_MESSAGE_LETTER_QUEUE】数据接收成功:{}", msg); msg = sysMessageService.insertSysMessage(msg); + LOGGER.info("【MQ-IMPP_MESSAGE_LETTER_QUEUE】数据接收成功:{}", msg); + // 收件人信息 - String[] messageReceiver = msg.getMessageReceiversId().split(","); - String[] receiverName = new String[messageReceiver.length]; + String[] messageReceiver = new String[0]; + String[] receiverName = new String[0]; + if (msg.getMessageReceiversId() != null) { + messageReceiver = msg.getMessageReceiversId().split(","); + receiverName = new String[messageReceiver.length]; + } SysRefUserMessage refUserMessage; SysUser sysUser; @@ -65,40 +71,41 @@ public class MessageLetterQueueReceiver { for (int i = 0; i < messageReceiver.length; i++) { sysUser = sysUserService.getSysUserById(Long.parseLong(messageReceiver[i])); - receiverName[i] = sysUser.getUserName(); + if(sysUser != null) { + receiverName[i] = sysUser.getUserName(); - refUserMessage = new SysRefUserMessage(); - refUserMessage.setMessageId(msg.getId()); - refUserMessage.setMessageTitleRdd(msg.getMessageTitle()); - refUserMessage.setMessageTypeRdd(msg.getMessageType()); - refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd()); - refUserMessage.setReceiverId(sysUser.getId()); - refUserMessage.setReceiverNameRdd(sysUser.getUserName()); - refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); - refUserMessage.setReceiverTime(TimeTool.getNowTime(true)); - refUserMessage.setIsUrgent(msg.getIsUrgent()); + refUserMessage = new SysRefUserMessage(); + refUserMessage.setMessageId(msg.getId()); + refUserMessage.setMessageTitleRdd(msg.getMessageTitle()); + refUserMessage.setMessageTypeRdd(msg.getMessageType()); + refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd()); + refUserMessage.setReceiverId(sysUser.getId()); + refUserMessage.setReceiverNameRdd(sysUser.getUserName()); + refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); + refUserMessage.setReceiverTime(TimeTool.getNowTime(true)); + refUserMessage.setIsUrgent(msg.getIsUrgent()); - sysMessageService.insertSysRefUserMessage(refUserMessage); + sysMessageService.insertSysRefUserMessage(refUserMessage); - userMessage = sysMessageService.findSysRefUserMessageByUserIdAndStatus(sysUser.getId(), - ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); - MessageWebSocket.sendMessage(sysUser.getUserInfoId(), - mapper.writeValueAsString(userMessage) - ); + userMessage = sysMessageService.findSysRefUserMessageByUserIdAndStatus(sysUser.getId(), + ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); + MessageWebSocket.sendMessage(sysUser.getUserInfoId(), + mapper.writeValueAsString(userMessage) + ); + } } msg.setMessageReceiversNameRdd(StringUtils.join(receiverName, ",")); sysMessageService.updateSysMessage(msg); - //信息已处理 - channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (IOException e) { - LOGGER.error("【MQ-IMPP_MESSAGE_LETTER_QUEUE】处理出错:{}",e.getMessage(),e); + LOGGER.error("【MQ-IMPP_MESSAGE_LETTER_QUEUE】处理出错:{}", e.getMessage(), e); //丢弃这条消息 try { // 未成功处理,重新发送 - channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true); + channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); } catch (IOException e1) { e1.printStackTrace(); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index a06fb5c..8d0d9e9 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -52,7 +52,8 @@ public class MessageMailQueueReceiver { @RabbitListener(queues = PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE) public void processImppMail(SysMessage msg, Channel channel, Message message) { try { - LOGGER.info("【MQ-IMPP_MESSAGE_MAIL_QUEUE】数据接收成功:{}",msg);msg = sysMessageService.insertSysMessage(msg); + LOGGER.info("【MQ-IMPP_MESSAGE_MAIL_QUEUE】数据接收成功:{}",msg); + msg = sysMessageService.insertSysMessage(msg); mailUtil.init(); // 系统预警邮件与用户邮件判断 @@ -73,7 +74,6 @@ public class MessageMailQueueReceiver { mailUtil.send(); } else{ - // 收件人信息 String[] messageReceiver = msg.getMessageReceiversId().split(","); String[] receiverName = new String[messageReceiver.length]; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java index 955cc57..4d091be 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java @@ -86,7 +86,7 @@ public class ScheduleQueueReceiver { } // 发送到对应处理队列 - if(ImppEnumUtil.MESSAGE_TYPE.MAIL.getValue() == taskPlan.getNoticeMethod().intValue()){ + if(taskPlan.getNoticeMethod() != null && ImppEnumUtil.MESSAGE_TYPE.MAIL.getValue() == taskPlan.getNoticeMethod().intValue()){ rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE,sysMessage); }else{ rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE,sysMessage); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java index 56fd50e..5f3dd0f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java @@ -1,16 +1,15 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysLogSystemService; -import cn.estsh.i3plus.core.apiservice.dao.ISysLogSystemDao; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.SysTool; import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; import cn.estsh.i3plus.pojo.platform.platrepositorymongo.SysLogSystemRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreBsonPack; +import com.mongodb.client.model.Filters; import io.swagger.annotations.ApiOperation; import org.bson.conversions.Bson; import org.slf4j.Logger; @@ -19,7 +18,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Map; /** * @Description : 系统日志服务接口实现 @@ -71,8 +69,9 @@ public class SysLogSystemService implements ISysLogSystemService { @Override @ApiOperation(value = "删除日志",notes = "删除日志") - public void deleteSysLogSystemById(Long id) { - logSystemRDao.deleteById(id); + public long deleteSysLogSystemById(Long id) { + Bson bson = Filters.eq("id",id); + return logSystemRDao.deleteByProperty(bson); } @Override @@ -102,7 +101,14 @@ public class SysLogSystemService implements ISysLogSystemService { } @Override - public void deleteSysLogSystemByIds(Long[] ids) { - logSystemRDao.deleteByIds(ids); + @ApiOperation(value = "系统日志批量删除",notes = "系统日志批量删除") + public long deleteSysLogSystemByIds(Long[] ids) { + return logSystemRDao.deleteByIds(ids); + } + + @Override + @ApiOperation(value = "系统日志按id区间查询",notes = "系统日志按id区间查询") + public List findSysLogSystemByIdInterval(long min, long max) { + return logSystemRDao.findByBson(CoreBsonPack.packBsonByInterval("_id",min,max)); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java index 44a0cc8..c8d31bb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java @@ -46,21 +46,22 @@ public class SysToolService implements ISysToolService { @ApiOperation(value = "新增硬件信息") public SysTool insertSysTool(SysTool tool) { // 查询硬件类型名称 - LOGGER.info("硬件类型 TOOL_TYPE :{}", tool); - SysToolType toolType = toolTypeRDao.getById(tool.getToolTypeId()); - ValidatorBean.checkNotNull(toolType); - - tool.setToolTypeNameRdd(toolType.getName()); - - LOGGER.info("硬件 TOOL tool:{}",tool); + //todo 压测关闭校验提高处理速度 +// LOGGER.info("硬件类型 TOOL_TYPE :{}", tool); +// SysToolType toolType = toolTypeRDao.getById(tool.getToolTypeId()); +// ValidatorBean.checkNotNull(toolType); +// +// tool.setToolTypeNameRdd(toolType.getName()); +// +// LOGGER.info("硬件 TOOL tool:{}",tool); return toolRDao.insert(tool); } @Override @ApiOperation(value = "删除硬件信息",notes = "根据 ID 删除硬件信息") - public void deleteSysToolById(Long id) { + public int deleteSysToolById(Long id) { LOGGER.info("硬件 TOOL id:{}",id); - toolRDao.deleteById(id); + return toolRDao.deleteByProperty("id",id); } @Override @@ -79,7 +80,12 @@ public class SysToolService implements ISysToolService { @Override public void insertBatch(int num,int waitTime){ - testDao.insertBatch(num,waitTime); + try { + testDao.insertBatch(num,waitTime); + Thread.sleep(waitTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } } @Override @@ -119,22 +125,27 @@ public class SysToolService implements ISysToolService { @Override @ApiOperation(value = "删除硬件信息",notes = "根据 ID 批量删除硬件信息") - public void deleteSysToolByIds(Long[] ids) { + public int deleteSysToolByIds(Long[] ids) { LOGGER.info("消息 SYS_MESSAGE ids:{}", Arrays.toString(ids)); - toolRDao.deleteByIds(ids); + return toolRDao.deleteByIds(ids); } @Override @ApiOperation(value = "更新设备信息",notes = "根据 ID 批量修改硬件状态信息") - public void updateSysToolStatusByIds(Long[] ids, Integer status) { + public int updateSysToolStatusByIds(Long[] ids, Integer status) { LOGGER.info("硬件 TOOL ids:{},status:{}",ids,status); StringBuffer where = new StringBuffer(); HqlPack.getInPack(StringUtils.join( ids,","), "id", where); - toolRDao.updateByHqlWhere(where.toString(), "toolStatus", status); + return toolRDao.updateByHqlWhere(where.toString(), "toolStatus", status); } public List findSysToolByTop(int topNum) { return toolRDao.findByHqlTopWhere("",topNum); } + + @Override + public List findSysToolByIdInterval(long min, long max) { + return toolRDao.findByHqlWhere(CoreHqlPack.packHqlByInterval("id",min,max)); + } } From 537b99a28a903c1ef4480cb36b7660fae2a2b6da Mon Sep 17 00:00:00 2001 From: "yunhao.wang" Date: Thu, 28 Feb 2019 12:28:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java index bb76866..e3cd5a5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java @@ -38,6 +38,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.util.UUID; /** * @Description : IMPP性能测试