日志记录优化:全服务支持异步方法、异步配置从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 组织编号,添加到组织上下文。
* 7. Async:异步需要保证 ThreadLocal 的传递性,通过使用阿里开源的 TransmittableThreadLocal 实现。相关的改造点,可见:
* 1Spring Async
* {@link com.cf.imes.framework.quartz.config.ChenfengAsyncAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()}
* {@link com.cf.imes.framework.quartz.config.ChenfengAsyncThreadAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()}
* 2Spring Security
* TransmittableThreadLocalSecurityContextHolderStrategy
* 和 chenfengSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法
@@ -5,16 +5,13 @@ import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
/**
* 异步任务 Configuration
* 异步线程 Configuration
*/
@AutoConfiguration
@EnableAsync
public class ChenfengAsyncAutoConfiguration {
public class ChenfengAsyncThreadAutoConfiguration {
@Bean
public BeanPostProcessor threadPoolTaskExecutorBeanPostProcessor() {
@@ -1,2 +1,2 @@
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.web.config.ChenfengWebAutoConfiguration
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.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
@@ -13,7 +12,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableAspectJAutoProxy(exposeProxy = true) // add config
@EnableFeignClients
@EnableAsync
@EnableScheduling //开启定时任务
public class ExecutorServerApplication {
public static void main(String[] args) {
@@ -1,14 +1,11 @@
package com.cf.imes.module.executor.util;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskDecorator;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.HashMap;
@@ -16,15 +13,6 @@ import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionHandler;
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
*/
@Slf4j
@EnableAsync
@Configuration
public class ThreadPoolConfig implements AsyncConfigurer {
@@ -4,7 +4,6 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* @author there
@@ -12,7 +11,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@EnableAspectJAutoProxy(exposeProxy = true) // add config
@EnableFeignClients
@EnableAsync
public class ManageServerApplication {
public static void main(String[] args) {
SpringApplication.run(ManageServerApplication.class, args);