【发布时间】:2022-12-11 14:53:35
【问题描述】:
我已经有了 REST API(用于系统到系统通信),这需要花费大量时间来处理。
我想要异步处理。我在这里看到两个选项:
-
为了使 API 本身成为异步的,它返回一个 LOCATION 标头,提供另一个 URI 来获取结果。
-
使客户端异步 - 使用异步 HTTP 客户端或 AsyncRestTemplate 等。
我想知道在这种情况下有什么更好的方法,因为两者似乎都可以解决问题。
【问题讨论】:
-
首先,您正在使用哪些技术堆栈?您检查过哪个过程最昂贵吗?为什么?您是否考虑过将处理长时间运行的请求作为在后台进行繁重计算的后台工作?在 python 中,我们主要使用芹菜。
-
@auvipy:我在使用 JAVA/Spring。我们有一些繁重的计算任务,这需要大量的努力来重构(并且可能不会带来太多性能优势)......所以我们想要寻找异步处理和非常权衡的选项,如果我们应该使客户端异步或使 api 本身异步...
-
我认为在那种情况下你应该尝试 rabbitmq 后台任务处理。 roytuts.com/spring-boot-rabbitmq-work-queues-example
标签: rest http asynchronous httpclient asyncresttemplate