gpt4 book ai didi

java - Spring任务执行器和调度器

转载 作者:行者123 更新时间:2023-11-30 07:49:28 25 4
gpt4 key购买 nike

我无法找到必要的信息,无论是在文档中还是在此处已经存在的问题中,这就是我自己创建一个的原因(我还不能在类似的帖子下提问)。

我需要知道的是Spring任务执行器和调度器之间的关系。我当前的配置如下所示:

<task:executor
id="executor"
pool-size="1-2"
queue-capacity="50"
rejection-policy="CALLER_RUNS"
/>
<task:scheduler id="scheduler" pool-size="2"/>

<task:scheduled-tasks scheduler="scheduler">
<task:scheduled ref="task1" method="methodInTask1" cron="0 1/5 * ? * *"/>
<task:scheduled ref="task2" method="methodInTask2" cron="0 0/5 * ? * *"/>
</task:scheduled-tasks>

我不确定它是如何工作的。 “谁”执行我的任务?难道是scheduler,as task都跟他一起安排?或者调度器只是创建它们,将它们放入队列中,然后执行器运行它们?

如果不是,并且运行的是调度器,我必须在特定类及其方法之上创建注释,以便它们可以由执行器启动?

对于它们之间的关系没有明确的解释,在文档中也没有关于“pool-size”的解释,但至少可以在其他问题中找到。如果运行任务的是调度程序,那么此配置中的执行程序是否多余?

最佳答案

文档中很好地解决了您的疑问(请参阅 this section 了解完整的行为方面)

回答您的具体问题

"Who" does run my tasks? Is it scheduler, as task are scheduled with him? Or scheduler is only creating them, placing in queue and excutor runs them?

scheduler namespace 创建一个 ThreadPoolTaskScheduler 的实例它能够自行处理任务执行(因为它实现了 AsyncTaskExecutor )。因此,调度程序在没有执行程序帮助的情况下自行执行任务。

There is no clear explanation to how they are related

调度器和执行器之间没有这样的关系,除了它们都实现 AsyncTaskExecutor 意味着异步执行任务(旁注 - executor 命名空间创建一个实例的 ThreadPoolTaskExecutor )

neither is for "pool-size"

section将为您提供相关详细信息。

If it's scheduler who runs the tasks is executor in this configuration redundant?

仅当您计划在您的应用程序中安排任务时才冗余,否则它将用于标记为 @Async 的任何任务。

希望这能回答您的问题,如果需要更多信息,请在评论中告知。

关于java - Spring任务执行器和调度器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48541864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com