泽西岛客户端不等待GET方法的结果



我在Java中有一个简单的应用程序,使用Jersey处理请求,在其他应用程序中,我使用Jersey的GET请求到达一些端点,如下所示:

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

正如你所看到的,我甚至不关心端点的结果,我只想"触发"它,作为端点,一旦它收到调用,它就会自己运行一些代码。

我的"问题"是,我对5个端点执行此操作,它们通常需要3秒,我不需要等待那么久,因为端点只返回"OK"消息,而我不关心实际消息。

有没有什么方法可以在不"阻塞"Java的情况下完成此GET操作?如"执行此调用并忽略结果"?我想把它留在泽西岛,但我对其他方式持开放态度。

我刚转到OkHttp:

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

而CCD_ 1变量只是一个空的回调。

我很久以前就看到JAX-RS添加了异步客户端/服务器工作流(这里是Jersey实现的链接(: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");

请告诉我,在这种情况下,这是像预期的一样工作,只是好奇

附言:我认为,有了这段代码,你的程序仍将等待响应,但在另一个线程中,你不必在主线程中管理事情。。但这种复杂性是隐藏的。

最新更新