diff --git a/apps/user-service/src/main/java/site/icebang/global/config/asnyc/AsyncConfig.java b/apps/user-service/src/main/java/site/icebang/global/config/asnyc/AsyncConfig.java index 8d664028..03fa1496 100644 --- a/apps/user-service/src/main/java/site/icebang/global/config/asnyc/AsyncConfig.java +++ b/apps/user-service/src/main/java/site/icebang/global/config/asnyc/AsyncConfig.java @@ -1,14 +1,21 @@ package site.icebang.global.config.asnyc; +import java.lang.reflect.Method; + +import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.task.support.ContextPropagatingTaskDecorator; +import org.springframework.scheduling.annotation.AsyncConfigurer; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j @Configuration @EnableAsync -public class AsyncConfig { +public class AsyncConfig implements AsyncConfigurer { @Bean("traceExecutor") public ThreadPoolTaskExecutor traceExecutor() { @@ -21,4 +28,19 @@ public ThreadPoolTaskExecutor traceExecutor() { executor.initialize(); return executor; } + + @Override + public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { + return new AsyncUncaughtExceptionHandler() { + @Override + public void handleUncaughtException(Throwable ex, Method method, Object... params) { + log.error( + "Async method execution failed - Method: {}.{}, Params: {}", + method.getDeclaringClass().getSimpleName(), + method.getName(), + params, + ex); + } + }; + } }