[Ежедневный свежий гриб] Средство запуска анализа исходного кода Vert.x

Микросервисы
[Ежедневный свежий гриб] Средство запуска анализа исходного кода Vert.x

в настоящее время используетVert.xКак правило, сначала начните с жизненного цикла. иvertx-coreпредоставляется по умолчаниюio.vertx.core.Launcherвыполнить.

События в жизненном цикле Vert.x

vertx-coreв упаковке есть одинinterface, по имениVertxLifecycleHooks, что позволяет подклассам средства запуска получать уведомления о различных событиях.

afterConfigParsed

ЭтоVert.xпредстартовый крюк, на данном этапе,Vert.xизOptionsтакже можно обновить. Входconfigчерез командную строку-confпереданные параметры.

void afterConfigParsed(JsonObject config);

beforeStartingVertx

иafterConfigParsedВ основном то же самое, параметры также могут быть изменены. ввод какVertxOptions.

void beforeStartingVertx(VertxOptions options);

afterStartingVertx

В настоящее времяVert.xЭкземпляр уже создан.

void afterStartingVertx(Vertx vertx);

beforeDeployingVerticle

Verticleперед развертыванием.

void beforeDeployingVerticle(DeploymentOptions deploymentOptions);

beforeStoppingVertx

Vert.xдо завершения экземпляра.

void beforeStoppingVertx(Vertx vertx);

afterStoppingVertx

Vert.xПосле завершения экземпляра.

void afterStoppingVertx();

handleDeployFailed

Когда развертывание не удается.

void handleDeployFailed(Vertx vertx, String mainVerticle, DeploymentOptions deploymentOptions,
                        Throwable cause);

Лаунчер в Vert.x

Launcherэто пусковая установка Vert.x, которая реализуетVertxLifecycleHooks, но реализация родственных методов в основном пустая, мы можем настроить свои собственныеLaucherОбрабатывается для каждого этапа события.

/**
 * 部署失败时,此方法会被调用。您可以重写此方法来自定义行为。
 * 默认情况下,它关闭`vertx`实例。
 *
 * @param vertx             vert.x 实例
 * @param mainVerticle      verticle
 * @param deploymentOptions verticle 部署参数
 * @param cause             部署失败的原因
 */
public void handleDeployFailed(Vertx vertx, String mainVerticle, DeploymentOptions deploymentOptions, Throwable cause) {
  // 如果部署失败,默认行为是关闭Vert.x
  vertx.close();
}

Пример пользовательского лаунчера

/**
 * Description: 启动 Launcher .<br>
 *
 * @author m-xy
 *     Created By 2020/4/2 12:14
 */
public class MainLauncher extends Launcher {
  private final static Logger logger = LoggerFactory.getLogger(MainLauncher.class);

  public static void main(String[] args) {
    System.setProperty(LOGGER_DELEGATE_FACTORY_CLASS_NAME, SLF4JLogDelegateFactory.class.getName());
    new MainLauncher().dispatch(args);
  }

  /**
   * 启动前准备阶段.
   *
   * @param options 参数
   */
  @Override
  public void beforeStartingVertx(VertxOptions options) {
    logger.info("[Vert.x] Vert.x Options Ready");
    options.setPreferNativeTransport(true);
    super.beforeStartingVertx(options);
  }

  /**
   * Vert.x启动完成阶段.
   *
   * @param vertx
   */
  @Override
  public void afterStartingVertx(Vertx vertx) {
    logger.info("[Vert.x] Starting Vert.x (JVM running for you)");
    super.afterStartingVertx(vertx);
  }

  /**
   * Vert.x停止阶段.
   */
  @Override
  public void afterStoppingVertx() {
    logger.info("[Vert.x] Stopping Vert.x (JVM running for you)");
    super.afterStoppingVertx();
  }

  /**
   * 部署失败时,此方法会被调用。您可以重写此方法来自定义行为。
   * 默认情况下,它关闭`vertx`实例。
   *
   * @param vertx             vert.x 实例
   * @param mainVerticle      verticle
   * @param deploymentOptions verticle 部署参数
   * @param cause             部署失败的原因
   */
  @Override
  public void handleDeployFailed(
    Vertx vertx, String mainVerticle, DeploymentOptions deploymentOptions, Throwable cause) {
    logger.error("[Vert.x] Start Vert.x Failed", cause);
    super.handleDeployFailed(vertx, mainVerticle, deploymentOptions, cause);
  }
}