客户端请求由doget处理,doget调用第三方api。然后,这个第三方api不会将响应发送回doget,而是调用我的另一个端点由dopost处理。我现在需要将dopost的响应写入doget。
所需的工作流程如下-
第三方api将回调dopost
dopost应该使用executor服务使用的可调用任务
然后,我将从executor service submit调用返回future,如上所示
dogetapi将执行阻塞 .get()
关于这个未来的行动
一旦收到来自 doPOST
收到, doGET
将向客户端返回相同的响应
为了实现这一点,我正在尝试如下设置executor和future机制-
public HttpServletResponse doGET(Request jettyReq, HttpServletRequest request, HttpServletResponse response) throws ExecutionException {
ExecutorService executor = Executors.newFixedThreadPool(10);
// Placeholder for the value which will arrive in the future
Future<WriteDoGetResponse> future = executor.submit(new WriteDoGetResponse());
// perform some unrelated actions here
// check future status that gives me an actual response object
HttpServletResponse modifiedResponse = future.get();
// if hashmap has future for request-id
executor.shutdown();
return modifiedResponse;
}
public WriteDoGetResponse doPOST(Request jettyReq, HttpServletRequest request, HttpServletResponse response) {
}
我现在在另一个类中有可调用的任务,但这不是我想要解决的问题。
static class WritedoGetResponse implements Callable<HttpServletResponse> {
@Override
public HttpServletResponse call() throws Exception {
return null;
}
但是我需要帮助如何使doPostAPI可调用?我需要一个机制来解决这个问题。因为executor.submit()接受一个示例,我无法使dopost实现可调用。有什么想法吗?
暂无答案!
目前还没有任何答案,快来回答吧!