我有一个名为A的mongodb集合。在该集合中,有一个名为field1的日期和时间字段。在我的方案中,我必须基于field1收集日期和时间已过期的记录。
我想到编写Spring Scheduler Job,该作业每分钟运行一次,以从mongodb中获取日期和时间过期的记录,但是当我开始编写时,我无法使Spring Scheduler具有可伸缩性。
在调度程序中,将记录转换为String,然后将消息推送到Kafka主题。在我的情况下,spring Scheduler在4个实例上运行,并将重复的消息推送到Kafka主题。
问题是,在Spring Scheduler中,如何停止对Kafka主题的重复消息,或者如何在没有任何重复消息的情况下实现可伸缩的Scheduler?
是否有任何基于事件的框架来支持我的情况?意味着当记录过期时,它应该立即通知java系统,即。类似于春季的TailableCursorlisteners监听cappedcollection。
您可以使用一个挂锁库,该库将确保在所有实例中仅一项作业正在运行这是更多信息的教程: