代码之家  ›  专栏  ›  技术社区  ›  Fabio Jim Dagg

在执行异步处理时保留http请求

  •  1
  • Fabio Jim Dagg  · 技术社区  · 6 年前

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

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

    Call diagram

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

    • 使用与Akka actors类似的方法

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Huy Nguyen    6 年前

    许多技术可以用来解决您的问题,比如:springmvc和springwebflux

    • 在springmvc中,我已经使用了DeferredResult、ResponseBodyEmitter和SseEmitter来处理异步请求并将结果推送回客户端。

    https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-async