有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Mockserver:收到请求后进行回调

我正在使用Mockserver测试一个异步产生副作用的HTTP服务。比如说,我正在测试ServiceA,它在/api/status/{id}公开了一个HTTP API方法。与将状态结果返回给API的调用方不同,ServiceA启动异步分析,如果满足某些条件,则调用ServiceB。假设这个异步过程需要几毫秒到几秒钟才能完成

目前,我的mockserver代码如下所示:

Long waitTimeoutSeconds = 5L;
Long start = System.currentTimeMillis();
HttpRequest[] asyncRequestsRetrieved = null;

while (start + (waitTimeoutSeconds * 1000L) < System.currentTimeMillis()) {
    asyncRequestsRetrieved = mockServer.retrieveRecordedRequests(HttpRequest.request().withPath("/service/b/path"));
    if (asyncRequestsRetrieved != null && asyncRequestsRetrieved.size > 0) {
        break;
    }
    Thread.sleep(50L);
}

assertNotNull(asyncRequestsRetrieved);
assertTrue(asyncRequestsRetrieved!!.size > 0);

Mockserver是否公开了一个模式,以便在给定端点收到请求时采取操作(例如,通知侦听器),还是轮询是我唯一的选择


共 (1) 个答案

  1. # 1 楼答案

    如果您以异步方式向ServiceB发送请求,那么您将得到一些响应,在这种情况下,轮询是唯一的选项。 我假设你的ServiceB有两个端点,一个用于创建作业,另一个用于检查作业的状态,如果作业准备好了,那么就得到结果