用于mongodb访存的可伸缩Spring调度程序

问题描述 投票:1回答:1

我有一个名为A的mongodb集合。在该集合中,有一个名为field1的日期和时间字段。在我的方案中,我必须基于field1收集日期和时间已过期的记录。

我想到编写Spring Scheduler Job,该作业每分钟运行一次,以从mongodb中获取日期和时间过期的记录,但是当我开始编写时,我无法使Spring Scheduler具有可伸缩性。

在调度程序中,将记录转换为String,然后将消息推送到Kafka主题。在我的情况下,spring Scheduler在4个实例上运行,并将重复的消息推送到Kafka主题。

问题是,在Spring Scheduler中,如何停止对Kafka主题的重复消息,或者如何在没有任何重复消息的情况下实现可伸缩的Scheduler?

是否有任何基于事件的框架来支持我的情况?意味着当记录过期时,它应该立即通知java系统,即。类似于春季的TailableCursorlisteners监听cappedcollection。

java spring scheduler job-scheduling spring-scheduled
1个回答
0
投票

您可以使用一个挂锁库,该库将确保在所有实例中仅一项作业正在运行这是更多信息的教程:

https://www.baeldung.com/shedlock-spring

© www.soinside.com 2019 - 2024. All rights reserved.