Jersey 客户端不等待 GET 方法的结果

Jersey client don't wait for result of GET method

我在 Java 中有一个简单的应用程序,使用 Jersey 进行请求,我在其他应用程序中使用 GET 请求访问其他应用程序中的一些端点,如下所示:

Client client = new Client();
WebResource webResource = client.resource("MY_ENDPOINT");
webResource.get(String.class);

如你所见,我什至不关心端点的结果,我只想'trigger'它,作为端点,一旦它收到调用,它就会运行 自己的一些代码。

我这里的'issue'是我对5个端点做这个操作,他们通常最多需要3秒,我不需要等那么久,因为端点只有returns 一条 'OK' 消息,我不关心实际的消息。

没有'blocking' Java有什么方法可以做这个GET操作吗?如 "do this call and ignore the result"?我想将它与 Jersey 一起保留,但我愿意接受其他方式。

我很久以前就看到 JAX-RS 添加了异步 client/server 工作流(这里是 Jersey 实现的 link): https://jersey.github.io/documentation/latest/async.html

我没有使用(和测试)它,但我认为你可以尝试类似的东西(考虑像伪代码):

  WebTarget target = client.target("http://targetsite/entrypoint");
  target.request().async().get(new InvocationCallback<Response>() {
      @Override
      public void completed(Response response) {
          return; //do nothing
      }

      @Override
      public void failed(Throwable throwable) {
          System.out.println("Error");
      }
  });
  System.out.println("Immediately here");

请告诉我这是否按预期工作,只是好奇

P.s:我认为,使用这段代码,你的程序仍然会等待响应,但在另一个线程中,你不必在主线程中管理东西,..但是这种复杂性已隐藏。

我刚搬到OkHttp

    Request request = new Request.Builder().url(MY_ENDPOINT).build();
    client.newCall(request).enqueue(callback);

并且 callback 变量只是一个空回调。