# bug解决:Feign远程调用和mongo插入异常java.lang.reflect.UndeclaredThrowableException ### F

254 阅读1分钟

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());
    }
}