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