Spring Boot中文参考指南 42、任务执行与调度

下一篇[未完待续]

Spring Boot中文参考指南 42、任务执行与调度/43、Spring 集成

<code>英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-task-execution-scheduling.html/<code>
<code>英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-integration.html/<code>
<code>GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot/<code>

42、任务执行与调度

在上下文中没有 Executor bean 的情况下,Spring Boot 会自动配置 ThreadPoolTaskExecutor,并使用合理的默认值,这些默认值可以自动关联到异步任务执行(@EnableAsync)和 Spring MVC 异步请求处理。

提示:

如果在上下文中定义了自定义 Executor,则常规任务执行(即 @Enablesync)将透明地使用它,但不会配置 Spring MVC 支持,因为它需要 AsyncTaskExecutor 实现(名为 applicationTaskExecutor)。根据目标安排,你可以将 Executor 更改为 ThreadPoolTaskExecutor,或者同时定义 ThreadPoolTaskExecutor 和包装自定义 Executor 的 AsyncConfigurer。

自动配置的 TaskExecutorBuilder 允许你轻松创建实例,以重现默认情况下自动配置的功能。

线程池使用 8 个核心线程,它们可以根据负载增长和收缩。可以使用 spring.task.execution 命名空间对这些默认设置进行微调,如下面示例所示:

Spring Boot中文参考指南 42、任务执行与调度/43、Spring 集成

<code>spring.task.execution.pool.max-threads=16
spring.task.execution.pool.queue-capacity=100
spring.task.execution.pool.keep-alive=10s/<code>

这会将线程池更改为使用有界队列,以便当队列已满(100 个任务)时,线程池最多增加到 16 个线程。当线程空闲 10 秒(而不是默认情况下的 60 秒),回收线程时,线程池的收缩更为剧烈。

如果需要将 ThreadPoolTaskScheduler 与计划的任务执行关联(@EnableScheduling),也可以自动配置前者。默认情况下,线程池使用一个线程,这些设置可以使用 spring.task.scheduling 命名空间进行微调。

如果需要创建自定义执行程序或调度程序,则在上下文中可以使用 TaskExecutorBuilder bean 和 taskschedule erbuilder bean。

43、Spring 集成

Spring Boot 为使用 Spring Integration 提供了多种便利,包括 spring-boot-starter-integration “Starter”。Spring Integration 提供了消息传递和其他传输 (如 HTTP 、 TCP 等) 的抽象。如果你的类路径上有 Spring Integration,则它将通过 @EnableIntegration 注解初始化。

Spring Boot 还配置了一些由其他 Spring Integration 模块触发的功能。如果 spring-integration-jmx 也在类路径上,则通过 JMX 发布消息处理统计信息。如果 spring-integration-jdbc 可用,则可以在启动时创建默认数据库模式(schema),如下面的行所示:

<code>spring.integration.jdbc.initialize-schema=always/<code>

有关更多详细信息,请参见 IntegrationAutoConfiguration 和 IntegrationProperties 类。

默认情况下,如果存在 Micrometer meterRegistry bean,则 Spring Integration 度量将由 Micrometer 管理。如果你希望使用旧的 Spring Integration 度量,请将 DefaultMetricsFactory bean 添加到应用程序上下文。

下一篇[未完待续]


分享到:


相關文章: