Springboot configura rápidamente el grupo de subprocesos

Escenarios de aplicación de grupos de subprocesos:

Incrustar notificaciones/anomalías de correo en el servicio a través de alarmas del sistema de mensajes, etc.

Minimice los servicios sin importancia que afectan la eficiencia del servicio original y necesitan usar el grupo de subprocesos para llamar de forma asíncrona

paso:

1. La clase de inicio configura el grupo de subprocesos para habilitar la anotación
@EnableAsyn
inserte la descripción de la imagen aquí

2. Opcional: configure la clase de configuración (si no coincide, será la predeterminada)

package com.a;

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 java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;

@Configuration
@EnableAsync
public class ExecutorConfig {
    
    

    private int corePoolSize = 10;

    private int maxPoolSize = 200;

    private int queueCapacity = 100;

    public static final String EXECUTORE_COMMON = "commonExecutor";

    public static final String EXECUTOR_MAIL = "mailExecutor";

    @Bean
    public Executor mailExecutor() {
    
     return configExecutor(EXECUTOR_MAIL); }

    @Bean
    public Executor commonExecutor() {
    
    
        return configExecutor("commonExecutor");
    }

    private Executor configExecutor(String threadNamePrefix) {
    
    
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(corePoolSize);
        executor.setMaxPoolSize(maxPoolSize);
        executor.setQueueCapacity(queueCapacity);
        executor.setThreadNamePrefix(threadNamePrefix);
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        executor.initialize();
        return executor;
    }
}

3. Use la anotación **@Async** en el método que debe ser asíncrono. El método no puede ser privado.
Si usa la configuración de la clase de configuración, agregue el nombre del bean de la configuración correspondiente,
como @Async( "correoEjecutor")
inserte la descripción de la imagen aquí

4. Preste atención a la escritura de registros
, como la apertura y el cierre del grupo de subprocesos, el contenido del envío de correos electrónicos, el resultado del envío de correos electrónicos, etc., además de los registros.

Supongo que te gusta

Origin blog.csdn.net/weixin_45752941/article/details/112629728
Recomendado
Clasificación