我正在尝试构建一个 Mulesoft 自定义连接器,该连接器向第三方系统发出 HTTP 请求,我希望这些 HTTP 请求以非阻塞方式发出,以便执行可以继续而无需等待 HTTP 响应被退回。
此处的 Mulesoft 文档中有一个示例,其中显示了此示例代码:
public void request(String url, @Connection HttpClient client, @Content String body,
CompletionCallback<InputStream, HttpAttributes> callback ) {
client.send(url, body, new HttpResponseCallback() {
void onResponse(HttpResponse response) {
callback.success(Result.<InputStream, HttpAttributes>builder()
.output(response.getBody())
.attributes(toAttributes(response))
.build());
}
void onError(Exception e) {
callback.error(e);
}
});
}
它还指出可以提供非阻塞行为
通过支持异步响应的 HttpClient
HttpClient 能够使用非阻塞 I/O 来发出请求。
但我不明白怎么做!
send(String, String, HttpResponseCallback)
上面的示例代码从HttpClient
接口调用一个方法。但是,Mulesoft 的 API javadocHttpClient
中 记录的接口没有这样的方法。
我看到该HttpClient
接口确实有sendAsync(HttpRequest request)
方法,但我无法理解如何将其与示例代码一起使用。
我知道 MulesoftHttpClient
是使用 Project Grizzly 的 HTTP 客户端实现的,并且支持非阻塞请求,所以我觉得这是可能的,我只是不明白如何......
感谢您的任何提示!