仅在 vertx 应用程序中的单个实例上运行计划作业



在我的 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));
}

最新更新