Browse Source

将对上级的汇总用队列机制进行集中批量处理

master
陈裕财 4 years ago
parent
commit
e463aaab9f
  1. 28
      xm-core/src/main/java/com/xm/core/listener/XmMenuSumParentsListener.java
  2. 27
      xm-core/src/main/java/com/xm/core/listener/XmTaskSumParentsListener.java

28
xm-core/src/main/java/com/xm/core/listener/XmMenuSumParentsListener.java

@ -56,17 +56,25 @@ public class XmMenuSumParentsListener extends MessageListener<XmMenu> {
if(myMenusAllMap.size()>0){ if(myMenusAllMap.size()>0){
List<XmMenu> menus=new ArrayList<>(); List<XmMenu> menus=new ArrayList<>();
List<XmMenu> errors=new ArrayList<>();
myMenusAllMap.forEach((projectId,menusMap)->{ myMenusAllMap.forEach((projectId,menusMap)->{
menus.addAll(menusMap.values()); menus.addAll(menusMap.values());
if(menus.size()>100){ if(menus.size()>100){
try {
xmMenuStateService.batchSumParents(menus);
new Thread(){
@Override
public void run() {
List<XmMenu> myMenus=new ArrayList<>();
synchronized (menus){
myMenus.addAll(menus);
menus.clear(); menus.clear();
}
try {
xmMenuStateService.batchSumParents(myMenus);
}catch (Exception e){ }catch (Exception e){
errors.addAll(menus);
menus.clear();
xmMenuStateService.batchSumParents(myMenus);
}
} }
}.start();
} }
}); });
if(menus.size()>0){ if(menus.size()>0){
@ -74,15 +82,7 @@ public class XmMenuSumParentsListener extends MessageListener<XmMenu> {
xmMenuStateService.batchSumParents(menus); xmMenuStateService.batchSumParents(menus);
menus.clear(); menus.clear();
}catch (Exception e){ }catch (Exception e){
}
}
if(errors.size()>0){
try {
xmMenuStateService.batchSumParents(errors);
errors.clear();
}catch (Exception e){
errors.clear();
xmMenuStateService.batchSumParents(menus);
} }
} }
} }

27
xm-core/src/main/java/com/xm/core/listener/XmTaskSumParentsListener.java

@ -55,18 +55,26 @@ public class XmTaskSumParentsListener extends MessageListener<XmTask> {
if(myTasksAllMap.size()>0){ if(myTasksAllMap.size()>0){
List<XmTask> tasks=new ArrayList<>(); List<XmTask> tasks=new ArrayList<>();
List<XmTask> errors=new ArrayList<>();
myTasksAllMap.forEach((projectId,tasksMap)->{ myTasksAllMap.forEach((projectId,tasksMap)->{
tasks.addAll(tasksMap.values()); tasks.addAll(tasksMap.values());
if(tasks.size()>100){ if(tasks.size()>100){
try {
xmTaskService.batchSumParents(tasks);
new Thread(){
@Override
public void run() {
List<XmTask> myTasks=new ArrayList<>();
synchronized (tasks){
myTasks.addAll(tasks);
tasks.clear(); tasks.clear();
}
try {
xmTaskService.batchSumParents(myTasks);
}catch (Exception e){ }catch (Exception e){
errors.addAll(tasks);
tasks.clear();
xmTaskService.batchSumParents(myTasks);
} }
} }
}.start();
}
}); });
if(tasks.size()>0){ if(tasks.size()>0){
try { try {
@ -76,14 +84,7 @@ public class XmTaskSumParentsListener extends MessageListener<XmTask> {
} }
} }
if(errors.size()>0){
try {
xmTaskService.batchSumParents(errors);
errors.clear();
}catch (Exception e){
errors.clear();
}
}
} }
} }

Loading…
Cancel
Save