Si no hay ningún bean Executor
en el contexto, Spring Boot configura automáticamente el ThreadPoolTaskExecutor
con valores predeterminados adecuados que pueden asociarse automáticamente con la ejecución de tareas asincrónicas
(el anotación @EnableAsync
) y procesamiento de solicitudes asincrónicas en Spring MVC.
Si define un Executor
personalizado en el contexto, durante la ejecución normal de la tarea (es
decir, con la anotación @EnableAsync
) se usará de forma transparente, pero Spring MVC el soporte no
se configurará porque requiere una implementación AsyncTaskExecutor
(llamada applicationTaskExecutor
).
Dependiendo de su organización de destino, puede cambiar Executor
a
ThreadPoolTaskExecutor
, o definir tanto ThreadPoolTaskExecutor
como AsyncConfigurer
envolviendo su personalizado Executor
.
La configuración automática TaskExecutorBuilder
le permite crear fácilmente instancias que replican
lo que hace la configuración automática de forma predeterminada.
El grupo de subprocesos utiliza 8 subprocesos principales, cuyo número puede aumentar o disminuir según la carga.
Estas configuraciones predeterminadas se pueden ajustar usando el espacio de nombres
spring.task.execution
, como se muestra en el siguiente ejemplo:
spring.task.execution.pool.max-size=16
spring.task.execution.pool.queue-capacidad=100
spring.task.execution.pool.keep-alive=10s
primavera:
tarea:
ejecución:
piscina:
tamaño máximo: 16
capacidad de cola: 100
mantener vivo: "10s"
Este código modifica el grupo de subprocesos para utilizar una cola con un límite de longitud, de modo que si la cola se llena (100 tareas), el grupo de subprocesos aumenta a un máximo de 16 subprocesos. La poda del grupo es más agresiva porque los subprocesos se restauran si están inactivos durante 10 segundos (en lugar de los 60 segundos predeterminados).
El Programador ThreadPoolTaskScheduler
también se puede configurar automáticamente si necesita asociarse
con la ejecución de tareas programadas (por ejemplo, usando la anotación @EnableScheduling
). El grupo
de subprocesos predeterminado utiliza un único subproceso, pero su configuración se puede ajustar utilizando el
espacio de nombres spring.task.scheduling
, como se muestra en el siguiente ejemplo:
spring.task.scheduling.thread-name-prefix=programación-
spring.task.scheduling.pool.size=2
primavera:
tarea:
Planificación:
prefijo-nombre-del-proceso: "programación-"
piscina:
tamaño: 2
Los beans TaskExecutorBuilder
y TaskSchedulerBuilder
están disponibles en el contexto si
necesita crear un ejecutor o programador personalizado.