bug解决:Feign远程调用和mongo插入异常java.lang.reflect.UndeclaredThrowableException
Feign远程调用
场景:Feign远程调用其他服务接口需要和接口的定义相同
解决:本地建立对象映射,Feign会自动将我们的对象转换成接口定义的对象
mongo插入异常java.lang.reflect.UndeclaredThrowableException
场景:在执行定时任务时,在定时任务中再次创建定时任务并持久化报错
@Override
public void run() {
try {
//开始执行任务:生成命令,移除自己,开启周期行任务
log.info("开始定时任务开始执行:生成流程实例命令");
timerCenter.insertCommand(procId);
timerCenter.cancelTask(taskId);
log.info("开始定时任务开始执:添加循环任务");
//采用事件处理-》多线程环境下添加任务报错
//直接持久化操作mongoTemplate.save(任务)报错
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("开始任务执行异常:"+e.getMessage());
}
}
问题分析:不清楚,mongo底层报错,可能是什么并发问题
解决方案
@Override
public void run() {
try {
//开始执行任务:生成命令,移除自己,开启周期行任务
log.info("开始定时任务开始执行:生成流程实例命令");
timerCenter.insertCommand(procId);
timerCenter.cancelTask(taskId);
log.info("开始定时任务开始执:添加循环任务");
//采用事件处理-》多线程环境下添加任务报错
EventCenter.publishEvent(new AddTriggerTaskEvent(taskId,procId,triggerTask,cron));
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("开始任务执行异常:"+e.getMessage());
}
}