日志记录优化:全服务支持异步方法、异步配置从job移到web

This commit is contained in:
gaoqr
2025-01-18 11:54:34 +08:00
parent addbf16eed
commit a8d2d24f96
8 changed files with 17 additions and 24 deletions
@@ -8,7 +8,7 @@
* 6. MQ:在 Producer 发送消息时,Header 带上 organ-id 组织编号;在 Consumer 消费消息时,将 Header 的 organ-id 组织编号,添加到组织上下文。 * 6. MQ:在 Producer 发送消息时,Header 带上 organ-id 组织编号;在 Consumer 消费消息时,将 Header 的 organ-id 组织编号,添加到组织上下文。
* 7. Async:异步需要保证 ThreadLocal 的传递性,通过使用阿里开源的 TransmittableThreadLocal 实现。相关的改造点,可见: * 7. Async:异步需要保证 ThreadLocal 的传递性,通过使用阿里开源的 TransmittableThreadLocal 实现。相关的改造点,可见:
* 1Spring Async * 1Spring Async
* {@link com.cf.imes.framework.quartz.config.ChenfengAsyncAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()} * {@link com.cf.imes.framework.quartz.config.ChenfengAsyncThreadAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()}
* 2Spring Security * 2Spring Security
* TransmittableThreadLocalSecurityContextHolderStrategy * TransmittableThreadLocalSecurityContextHolderStrategy
* 和 chenfengSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法 * 和 chenfengSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法
@@ -5,16 +5,13 @@ import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
/** /**
* 异步任务 Configuration * 异步线程 Configuration
*/ */
@AutoConfiguration @AutoConfiguration
@EnableAsync public class ChenfengAsyncThreadAutoConfiguration {
public class ChenfengAsyncAutoConfiguration {
@Bean @Bean
public BeanPostProcessor threadPoolTaskExecutorBeanPostProcessor() { public BeanPostProcessor threadPoolTaskExecutorBeanPostProcessor() {
@@ -1,2 +1,2 @@
com.cf.imes.framework.quartz.config.ChenfengXxlJobAutoConfiguration com.cf.imes.framework.quartz.config.ChenfengXxlJobAutoConfiguration
com.cf.imes.framework.quartz.config.ChenfengAsyncAutoConfiguration com.cf.imes.framework.quartz.config.ChenfengAsyncThreadAutoConfiguration
@@ -0,0 +1,12 @@
package com.cf.imes.framework.async;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* 异步任务 Configuration
*/
@AutoConfiguration
@EnableAsync
public class ChenfengAsyncAutoConfiguration {
}
@@ -3,3 +3,4 @@ com.cf.imes.framework.jackson.config.ChenfengJacksonAutoConfiguration
com.cf.imes.framework.swagger.config.ChenfengSwaggerAutoConfiguration com.cf.imes.framework.swagger.config.ChenfengSwaggerAutoConfiguration
com.cf.imes.framework.web.config.ChenfengWebAutoConfiguration com.cf.imes.framework.web.config.ChenfengWebAutoConfiguration
com.cf.imes.framework.apilog.config.ChenfengApiLogRpcAutoConfiguration com.cf.imes.framework.apilog.config.ChenfengApiLogRpcAutoConfiguration
com.cf.imes.framework.async.ChenfengAsyncAutoConfiguration
@@ -4,7 +4,6 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
@@ -13,7 +12,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@EnableAspectJAutoProxy(exposeProxy = true) // add config @EnableAspectJAutoProxy(exposeProxy = true) // add config
@EnableFeignClients @EnableFeignClients
@EnableAsync
@EnableScheduling //开启定时任务 @EnableScheduling //开启定时任务
public class ExecutorServerApplication { public class ExecutorServerApplication {
public static void main(String[] args) { public static void main(String[] args) {
@@ -1,14 +1,11 @@
package com.cf.imes.module.executor.util; package com.cf.imes.module.executor.util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskDecorator;
import org.springframework.scheduling.annotation.AsyncConfigurer; import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.HashMap; import java.util.HashMap;
@@ -16,15 +13,6 @@ import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.LinkedBlockingQueue;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import javax.annotation.Nonnull;
/** /**
@@ -32,7 +20,6 @@ import javax.annotation.Nonnull;
* @author FengJinSong * @author FengJinSong
*/ */
@Slf4j @Slf4j
@EnableAsync
@Configuration @Configuration
public class ThreadPoolConfig implements AsyncConfigurer { public class ThreadPoolConfig implements AsyncConfigurer {
@@ -4,7 +4,6 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
/** /**
* @author there * @author there
@@ -12,7 +11,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication @SpringBootApplication
@EnableAspectJAutoProxy(exposeProxy = true) // add config @EnableAspectJAutoProxy(exposeProxy = true) // add config
@EnableFeignClients @EnableFeignClients
@EnableAsync
public class ManageServerApplication { public class ManageServerApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(ManageServerApplication.class, args); SpringApplication.run(ManageServerApplication.class, args);