当前位置: 首页 > 知识库问答 >
问题:

队列大小为1的Spring调度

雷方伟
2023-03-14

我正在使用Spring3调度和线程池框架。我想在不同的时间/间隔安排不同的任务。我希望在开始另一项任务之前,每个任务都运行到完成。

例如,如果我有task1和task2:task1每10分钟运行一次,task2每天运行一次需要1分钟,运行5分钟。

如果task1和task2计时器同时触发,我希望task1和task2被放在队列中,一次只取消一个任务。

我知道我可以用一个Spring ThreadPoolTaskExecatorie来设置它

<task:executor id="executorWithPoolSizeRange"
               pool-size="5-10"
               queue-capacity="1"/>

然而,我不知道如何将该执行程序挂接到调度程序中。当使用Spring ThreadPoolTaskScheduler时,您只能设置池大小,而不能设置队列大小

<task:scheduler id="scheduler" pool-size="10"/>

有没有人知道我如何能够一起使用Spring exceator和调度器服务来实现我的目标?

共有1个答案

云炜
2023-03-14

你可以通过两种方式做到:

一种是在task:annotation-driven标记中明确指定调度器和taskExecutor:

<task:annotation-driven executor="executor" scheduler="scheduler"/>

或者,作为计划任务的一部分,您可以插入executor并明确提交给executor:

executor.execute(myrunnable/callable)
 类似资料:
  • 我需要能够更改ThreadPoolExecator的任务队列的大小。当然,BlockingQueue不支持更改大小,ThreadPoolExecitor不支持更改队列。 所以,我想到的方法是使用ThreadPoolExecutor。shutdownNow(),它返回了一个尚未执行的可运行程序列表。然后,我可以创建一个具有所需队列大小的新执行器,并重新提交所有任务。 问题是在shutdownNow(

  • 我正在尝试定期检查Kafka某个主题的队列大小。尽管如此,我甚至不知道如何检查这个指标一次。我对Kafka完全陌生,所以我不知道该怎么做。我认为这将涉及创建一个生产者或消费者来与队列交互,但我遇到了一个障碍。

  • 问题内容: 如何在0(1)时间复杂度的任何时间从队列中检索max和min元素?早些时候,我使用Collections.max和min查找元素,但这将是0(n)。 问题答案: 您只有2种方法来获得最小/最大操作的O(1): 如果结构已排序,并且您知道最大值/最小值位于何处 如果结构未排序且仅允许插入:每次插入项目并分别存储值时,您可以重新计算最小值/最大值 如果结构未排序并且允许插入和删除:我认为您

  • 问题内容: 我一直在查看我的elasticsearch日志,但遇到了错误 查找错误后,普遍的共识是增加队列的大小,如此处所述-https: //www.elastic.co/guide/en/elasticsearch/reference/current/modules- threadpool.html 我的问题是实际上该如何做?我缺少某处的配置文件吗? 问题答案: 要更改队列大小,可以将其添加到

  • 我有一个带有此参数的qpid队列:bus-sync-query--耐用--file-size=48--file-count=64 我想把1000000条消息放到这个队列中。每条消息只是一个包含12个字符的字符串。(002000333222、002000342678等)。我必须将哪些值设置为config--file size=X--file count=Y才能将所有消息放入队列?