在执行器服务需要对象时进行异步响应写入?

mbyulnm0  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(226)

客户端请求由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实现可调用。有什么想法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题