gpt4 book ai didi

java - 从队列中调度任务

转载 作者:行者123 更新时间:2023-11-30 06:21:42 26 4
gpt4 key购买 nike

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

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

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

这种方法有两个问题。

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

请帮忙。

我正在使用 Spring 启动。它们需要进行处理,直到以编程方式删除为止。

最佳答案

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

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

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

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

关于java - 从队列中调度任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018861/

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