繁体   English   中英

从队列调度任务

[英]Scheduling tasks from Queue

我有一个用例,其中生成了一个项目(事件)列表。

我必须定期处理它们(例如 30 秒)。

我想使用一个队列来存储事件,并有一个调度程序来一个一个地处理条目并将其再次推回到队列中以再次处理。

这种方法有两个问题。

  1. 队列永远不会为空,因此调度程序处于无限循环中。
  2. 这不能跨多个类似的过程进行扩展。

请帮忙。

我正在使用 Spring Boot。 他们需要进行处理,直到以编程方式将其删除。

如果您的项目可以包含额外的 3rd 方工具,那么我将执行以下操作:

对于队列,我会使用RabbitMq (带有备份副本),它可以解决扩展问题,因为您的所有 spring-boot 应用程序都可以轻松订阅RabbitMq

说到 30 秒延迟,这可以通过多种方式实现。 例如,您可以以编程方式“阻止”您的消息 30 秒,然后将其扔回队列中,在该队列中,下一个“随机”消费者将使用该消息。

其他选择是使用RabbitMq延迟插件。 您可以在此处阅读有关此插件的更多信息。 本质上,消息将在交换器中保留 X 秒,然后才会进入队列,然后由消费者处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM