在我的 Vertx(Java( 应用程序中,很少有计划作业(用 java 编写(。这些作业读取/更新 redis 或数据库。当我在多个实例上部署应用程序时,所有实例都会运行自己的作业副本。我需要一个只有一个实例运行计划作业的解决方案。
假设您在项目中部署垂直点,如下所示:
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
vertx.deployVerticle(YourVerticle.class.getName(), new DeploymentOptions().setInstances(10));
}
您可以通过这种方式安排定期任务,这只会在给定时间点触发任务一次。
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
vertx.setPeriodic(10 * 1000, 10 * 60 * 1000,
(timerId) -> {
// the actual task code
});
vertx.deployVerticle(YourVerticle.class.getName(), new DeploymentOptions().setInstances(10));
}