You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vert.x:如何测试特定Verticle的已部署实例数量?

测试Vertx Verticle部署实例数量的方法

方案一:通过Vertx部署信息查询

Vertx提供了内置API可以获取部署的详细信息,你可以通过这些API直接验证目标Verticle的实例数:

@Test
void testMyVerticleCount(Vertx vertx, VertxTestContext context) {
    vertx.deploymentIDs().forEach(deploymentId -> {
        DeploymentInfo deploymentInfo = vertx.getDeploymentInfo(deploymentId);
        // 匹配目标Verticle的全类名
        if ("com.somepackage.MyVerticle".equals(deploymentInfo.getMain())) {
            // 断言实例数等于预期的2
            assert deploymentInfo.getInstances() == 2;
            context.completeNow();
        }
    });
}

方案二:通过Verticle内部计数器统计

给MyVerticle添加一个线程安全的静态计数器,在启动/停止方法中更新数值,测试时直接读取计数器值验证:

修改后的MyVerticle代码

package com.somepackage;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import java.util.concurrent.atomic.AtomicInteger;

public class MyVerticle extends AbstractVerticle {
    // 线程安全的静态计数器,统计当前运行的实例数
    public static final AtomicInteger RUNNING_INSTANCES = new AtomicInteger(0);

    @Override
    public void start(Promise<Void> startPromise) {
        RUNNING_INSTANCES.incrementAndGet();
        System.out.println("starting Verticle");
        startPromise.complete();
    }

    @Override
    public void stop(Promise<Void> stopPromise) throws Exception {
        RUNNING_INSTANCES.decrementAndGet();
        super.stop(stopPromise);
    }
}

测试方法代码

@Test
void testMyVerticleCount(Vertx vertx, VertxTestContext context) {
    // 断言当前运行的实例数为2
    assert MyVerticle.RUNNING_INSTANCES.get() == 2;
    context.completeNow();
}

内容的提问来源于stack exchange,提问作者Lukas Weber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:52:41