用于 mongodb 提取的可扩展 spring 调度程序

Scalable spring scheduler for mongodb fetch

我有 mongodb 个名为 A 的集合。在那个集合中有一个名为 field1 的日期和时间字段。在我的场景中,我必须根据 field1 收集已过期日期和时间的记录。

我想编写 spring 调度程序作业,它每分钟运行一次以从 mongodb 中获取日期和时间过期的记录,但是当我开始编写时,我无法将 spring 调度程序设置为可扩展的。

在调度程序中,将记录转换为字符串并将消息推送到 Kafka 主题。在我的例子中 spring 调度程序在 4 个实例上运行并将重复的消息推送到 Kafka 主题。

问题是,在 spring 调度器中,如何停止向 Kafka 主题发送重复消息或如何在没有任何重复消息的情况下实现可扩展的调度器?

有任何基于事件的框架来支持我的场景吗?意味着当记录过期时,它应该立即通知 java 系统,即。类似于 spring 中的 TailableCursorlisteners 监听 cappedcollection。

您可以使用 shedlock 库,这将确保所有实例中只有一个作业是 运行 这里是教程以获取更多信息:

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