有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在执行异步处理时持有http请求的java

我们有一个API,它作为一个外观,封装了对内部服务的调用。我们计划改变外观和内部服务之间的交互,因为我们正在修改内部服务以使用队列,使其更具弹性和弹性。我们现在不能改变客户端使用API的方式,这就是为什么我们希望保持客户端和外观之间的阻塞调用

该服务将公开一个web方法来接收请求,将消息发布到队列,并尽快将调用返回到façade。处理完成后,服务将调用façade的内部web方法,释放第一个调用(façade的客户端)

Call diagram

立面使用Spring Boot和MVC构建。问题是:我们如何“保持”客户机的http请求,等待来自服务的信号将数据返回给客户机?我们考虑了以下方法:

  • 第一次调用API时,它会生成一个唯一标识符并将其发送给内部服务。然后,façade中的web方法将轮询(检查并睡眠)一个单例对象(可能是ConcurrentHashMap),以查找与唯一标识符关联的对象。当内部服务向façade发出信号时,它将结果放入singleton对象中,这样web方法就可以将信息返回给客户端
  • 使用上述Akka参与者的类似方法

我们担心这个解决方案的可伸缩性和可用性(我们知道保留客户机http请求并不好,但我们必须接受一段时间)

这里有人做过类似的事情吗?采用了什么方法?是否有一些框架(Java)可以使用


共 (1) 个答案