我在Pivotal Cloud Foundry(PCF)中有一个spring@Scheduled作业,它可以在多个实例中运行,但我想限制它在PCF云环境中只能在一个实例中运行。
实现此目的的一种方法是查看instance_index
或cf_instance_index
(它们是相同的)环境变量。这将具有应用程序实例的实例号。它是从零开始的,所以它将是0的应用程序实例数减去1(例如:5个AI==0-4)。
有很多方法可以在你的应用程序中实现这一点,但最高层次的想法是,你选择一个索引号,并使它使调度只运行在该索引号上。Zero是您通常选择的,因为始终存在第0个实例,但您可以在任何索引上运行它。
至于实现这一目标的方法:
我肯定还有其他的选择。那些只是我头顶上的那些。
希望有帮助!
我试图在Quartz 1.6中创建一个,但必须只执行一次,因为我有两个测试实例具有相同版本的.war文件。 这是我的类,将每60秒执行一次: 然后我有我的类来打印一个简单的输出:
我有一个作业,它在集群环境中的多个服务器上运行。但是,我想限制作业只在一台服务器中运行,其他服务器不应该运行同一作业,一旦其他服务器启动了它。 我已经使用一些数据库表探索了Spring批处理具有锁机制,但仅在Spring中寻找任何解决方案。
问题内容: 我正在编写一个具有cron作业的应用程序,该作业每60秒执行一次。该应用程序被配置为在需要时扩展到多个实例。我只想每60秒(在任何节点上)在1个实例上执行任务。开箱即用,我找不到解决方案,但令我惊讶的是,之前没有多次被问到。我正在使用Spring 4.1.6。 问题答案: 批处理和计划的作业通常在自己的独立服务器上运行,而不是面向客户的应用程序,因此将作业包含在预期在群集中运行的应用程
在Quartz-Scheduler中是否可以定义作业的执行约束? 谢谢你的回答。
我正在做简单的Spring批量工作。当我启动作业时,它在无限循环中运行。它不会停止。根据我的时间表,它应该每10秒运行一次。但当工作开始时,它不会停止。它只是分别从读卡器、处理器和写入器打印系统输出。我正在为读者、处理者和作者创造工作机会。我正在按注释进行所有配置。不是通过xml。 下面是批处理配置 PersonReader。JAVA 人Writer.java 个人处理器。JAVA