【问题标题】:Vertx stop method not executed on service stop服务停止时未执行 Vertx 停止方法
【发布时间】:2021-03-02 12:28:08
【问题描述】:

当我停止服务时,停止不会被调用,但是如果在我部署和取消部署具有部署 ID 的 Verticle 的测试用例中尝试相同的方法,则停止方法正在执行。

编辑:- 我正在创建 jar 文件(不是影子 Jar)。 下面是 build.gradle 配置

application{
    mainClassName='io.vertx.core.Launcher'
}

def mainVerticleName = 'verticleName'

jar {
    manifest {
        attributes(
                "Manifest-Version": "1.0",
                "Main-Verticle": "$mainVerticleName",
                "Main-Class": "io.vertx.core.Launcher",
                "Class-Path": configurations.runtimeClasspath.collect { it.getName() }.join(' ')
        )
    }
}

启动应用程序:-

java -jar api-gateway-1.0.0-SNAPSHOT.jar -Dconfig.propertyFile="<property file path>" -DlogfilePath="<log file path>"

停止应用程序:-

CTRL+C

【问题讨论】:

  • 请提供更多关于在不运行测试用例时如何打包、启动和停止应用程序的上下文
  • 如何“停止服务”?您只是终止您的 JVM 进程吗?
  • 不,我没有终止 jvm 进程,已更新
  • @tsegismont 我已经更新了问题
  • 我看不出有什么明显的错误。你能用一个简单的复制器提出问题吗?

标签: vert.x shutdown-hook vertx-verticle


【解决方案1】:

创建 CustomLauncher 扩展 Launcher 类有效。

@Log4j2
public class CustomLauncher extends Launcher {
   

    public static void main(String[] args) {
        new CustomLauncher().dispatch(args);
    }

    @Override
    public void beforeStoppingVertx(Vertx vertx) {
        log.info(" beforeStoppingVertx Called ===========");
       cleanUPBeforeStoppingVerx();
    }

    @Override
    public void afterStoppingVertx() {
        log.info(" afterStoppingVertx Called ===========");
    }

    @Override
    public void beforeDeployingVerticle(DeploymentOptions deploymentOptions) {
        log.info(" beforeDeployingVerticle Called ===========");
    }

    @Override
    public void beforeStartingVertx(VertxOptions options) {
        log.info(" beforeStartingVertx Called ===========");
    }

   
    @Override
    public void afterStartingVertx(Vertx vertx) {
        log.info(" afterStartingVertx Called ===========");
    }

    @Override
    public void handleDeployFailed(Vertx vertx, String mainVerticle, DeploymentOptions deploymentOptions,
                                   Throwable cause) {
        log.info("handleDeployFailed *****************");
        vertx.close();
    }
}

build.gradle 更改:-

jar {
    manifest {
        attributes(
                "Manifest-Version": "1.0",
                "Main-Verticle": "LauncherVerticle",
                "Main-Class": "CustomLauncher",
                "Class-Path": configurations.runtimeClasspath.collect { it.getName() }.join(' ')
        )
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2014-05-24
    相关资源
    最近更新 更多