我有一个用例,我有一个生成的项目(事件)列表。
我必须定期处理它们(比如30秒)。
我想使用一个队列来存储事件,并让一个调度程序逐个处理这些条目,然后再将它推回到队列中再次处理。
这种方法存在两个问题。
请帮忙。
我正在使用Spring启动。他们需要进行处理直到以编程方式删除它们。
答案 0 :(得分:1)
如果您的项目可以包含额外的第三方工具,那么我会按如下方式进行:
对于队列,我使用RabbitMq
(带有备份副本)来解决扩展问题,因为所有的spring-boot应用程序都可以轻松订阅RabbitMq
。
说到30秒延迟,这可以通过几种方式完成。例如,您可以以编程方式“阻止”您的消息30秒,然后将其重新放回队列,消息将由下一个“随机”消费者使用。
其他选项是使用RabbitMq
延迟插件。您可以阅读有关此插件here的更多信息。本质上,消息将在交换中保持X秒,然后才会进入队列,然后由消费者处理。