Browse Source

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

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

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

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

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