我正在构建一个服务,它调用其他REST来获取数据。我必须调用REST (API A),并根据它的输出调用另外两个REST (API B& C)。"API“支持分页,因此我可以将开始计数和获取大小传递给它,以获得一组特定的数据。
目前,我在一个大小为200的循环中调用"API A“(直到返回空响应)。每次调用之后,我将依次调用API B和API C。我调用的API B的获取大小为200 (与API A相同)。API C只支持一个输入,所以我循环使用API输出,并对每一行调用一次。所有这些连续调用都导致我的API需要很长时间才能返回响应。虽然我目前调用的API A的获取大小为200,并在2秒内返回,但我希望通过异步调用API A来减少这一次,使其具有更小的获取大小。
我计划将我的代码重新排列如下:
我试着用可完成的未来(或任何其他方法)来完成上面的逻辑,但最终感觉非常复杂。因此,我无法最终确定应该遵循的基本代码结构。
发布于 2021-07-23 05:45:51
我认为您想要的可以通过使用来自WebClient库的Spring弹簧网通量来实现(参见https://www.baeldung.com/spring-5-webclient如何使用该客户端)。
WebClient是Spring的追随者,RestTemplate可以以非阻塞的方式工作。
发布于 2021-07-23 09:03:05
对API B和C的调用是否取决于先前的调用?如果不是,您可以使用WebClient异步和并行地使用Mono.zip()调用它们。
https://stackoverflow.com/questions/68494395
复制相似问题