在频繁运行的 cron spring 中同时运行多个例程

问题描述 投票:0回答:1

我安排了每 15 分钟运行一次的 cron,并使用活动计划查询所有活动订阅者,并点击每个订阅者的使用情况获取 api 并更新数据库中的使用情况。所有这些活动都由单个线程运行,因此每次 cron 运行都需要 45 到 70 分钟,这是非常长的时间,并且订阅者无法立即查看实时使用情况。一旦 cron 运行,另一次运行就会等待上一次运行完成。

您能否建议任何更好的方法来处理此问题,以减少 cron 时间,并且对于任何数量的订阅者,cron 运行都必须在 15 分钟内完成?

java
1个回答
0
投票

你能并行处理吗?

您确实没有提供足够的信息供任何人提供建议。不过,让我猜一下,每个“订阅者”都可以并行处理,所以你会做这样的事情(伪代码):

ExecutorService executorService = Executors.newFixedThreadPool(10)

subscriberUsageUpdater() {
  read subscribers
  for each subscriber:
     executorService.submit {
        process subscriber // hits the usage fetch api for each subscriber and update the usage in the database
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.