Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于mongodb获取的可扩展spring调度程序_Java_Spring_Scheduler_Job Scheduling_Spring Scheduled - Fatal编程技术网

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

Java 用于mongodb获取的可扩展spring调度程序,java,spring,scheduler,job-scheduling,spring-scheduled,Java,Spring,Scheduler,Job Scheduling,Spring Scheduled,我有一个名为A的mongodb集合。在该集合中有一个名为field1的日期和时间字段。在我的场景中,我必须根据field1收集过期日期和时间的记录 我曾想过编写每分钟运行一次的spring调度程序作业,以从mongodb获取日期和时间过期的记录,但当我开始编写时,我无法使spring调度程序具有可伸缩性 在scheduler中,将记录转换为字符串,并将消息推送到Kafka主题。在我的例子中,spring调度程序在4个实例上运行,并将重复消息推送到Kafka主题 问题是,在SpringSchedu

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

我曾想过编写每分钟运行一次的spring调度程序作业,以从mongodb获取日期和时间过期的记录,但当我开始编写时,我无法使spring调度程序具有可伸缩性

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

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


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

您可以使用shedlock库,它将确保所有实例中只有一个作业在运行 有关详细信息,请参见教程:


您可以使用shedlock库,该库将确保所有实例中只有一个作业在运行 有关详细信息,请参见教程:


是的,我看到了该库,但我希望运行所有实例,而不是一次运行一个…@PrabaharanKathiresan所有4个实例都将运行,但一次只有一个实例将处理您的业务逻辑。或者你能解释更多细节吗?你真的需要这4个作业并行运行吗?您是否有一些性能限制?在通知的情况下,您可以使用实现EventSourcing模式的Axon framework是的,我看到了该库,但我希望运行所有实例,而不是一次运行一个…@PrabaharanKathiresan所有4个实例都将运行,但一次只有一个实例将处理您的业务逻辑。或者你能解释更多细节吗?你真的需要这4个作业并行运行吗?您是否有一些性能限制?在通知的情况下,您可以使用实现EventSourcing模式的Axon框架。您是否检查了quartz scheduler?它允许在共享数据库上调度任务并运行可扩展的数据库。如果您使用其他可扩展的解决方案,那么共享将非常困难。您是否检查了quartz scheduler?它允许在共享数据库上调度任务并运行可扩展的数据库。如果您使用其他可扩展的解决方案,那么共享将是一件非常有趣的事情。