间隔一段时间后,从休息端点发送不同的响应 url

after a interval send different response from a rest endpoint url

有一个应用程序用于在特定时间间隔后继续轮询一些休息端点 URL 以获取状态。其余 API 正在等待某个操作完成。直到操作不会完成并且应用程序将到达端点时,剩下的 API 发送状态作为响应状态 'in progress'。一旦操作完成,休息 API 发送成功作为响应状态。

我很难模拟此休息 API,因为我不想使用实际休息 API 进行测试。

在应用程序将通过点击端点进行轮询的时间间隔后,是否有任何方法可以从模拟休息 API 发送不同的响应?

为此,我正在使用带 java 的顶点。

这与 Vert.x 没有特别相关,但仍然。

这里的技巧不是计算间隔,而是计算这个模拟端点被命中的次数。

下面是演示其工作原理的代码:

private static final Vertx vertx = Vertx.vertx();
private static final HttpClient client = vertx.createHttpClient(
        new HttpClientOptions()
                .setDefaultHost("localhost")
                .setDefaultPort(8443));
public static void main(final String[] args) {
    AtomicInteger hitCounter = new AtomicInteger(0);
    vertx.createHttpServer().requestHandler((c) -> {
        if (hitCounter.incrementAndGet() >= 5) {
            c.response().setStatusCode(200).end();
        }
        else {
            c.response().setStatusCode(202).end();
        }
    }).listen(8443);

    System.out.println("Server started");

    callServerUntilSuccess();
}

public static void callServerUntilSuccess() {
    client.request(HttpMethod.GET, "/", (r) -> {
        if (r.statusCode() == 200) {
            System.out.println("I'm done");
        }
        else {
            System.out.println("I'll try again");
            vertx.setTimer(1000, (l) -> callServerUntilSuccess());
        }
    }).end();
}