如何安排工作/任务

How to schedule jobs / tasks

我真的不知道我在寻找什么,我也不是在寻求最佳解决方案。我想寻求可能的解决方案来完成我的要求。 我正在使用 Spring Boot.

构建应用程序

我有一个包含单词的数据库。我在网站上使用这些词来搜索产品,并希望 运行 一遍又一遍,每次搜索之间有一段时间。

基本上,应用程序会向数据库询问在特定时间(比如 5 分钟)内尚未搜索到的所有单词。我在查询响应中收到的单词发送到 KafkaQueue,然后由工作人员处理。一旦他们被工人使用,我就会在数据库中更新当前时间。

所以我每隔 1 分钟(或更频繁)在数据库中搜索一次,以找到 5 分钟未使用的那些,然后 运行 再次搜索它们。

这给了我很多与数据库的连接,我在想是否有更好的解决方案。工人们也在将其他数据保存到数据库中的其他表中去。

大概每5分钟翻80-90个字。 我有一个想法,选择其中的一些,然后将它们发送给调度程序,以在剩余的时间内将它们设置为 运行,直到 5 分钟过去。

如果我同时安排 20 个任务,这会不会对内存产生很大影响?

目前我正在使用 postgresql,但也许这不是执行此类操作的最佳数据库? 我将能够删除 and/or 添加新词,所以我不知道是否可以为这些词使用内存数据库。

听起来您需要的是来自 Spring Boot 的调度程序。考虑使用 @Scheduled 注释。以下 link 应该为您提供一切 Scheduled Annotation .

我最终使用了 JobRunr,它能够为我设置的每个任务安排不同的延迟。到目前为止,它使用起来非常顺利,对我来说效果很好。

Spring Boot 中的计划注释非常好用,但当我想更灵活地为每个任务设置不同的延迟时,它对我来说不是。