gpt4 book ai didi

spring - 立即返回 Spring 网通量

转载 作者:行者123 更新时间:2023-12-04 20:29:54 25 4
gpt4 key购买 nike

我正在尝试创建应该返回 201 响应的框架。当向 API 发出请求时,我想立即发回响应并在后台处理请求。

Flux.fromIterable(request.getApiRequests()).log().flatMap(item -> {

WebClient.RequestHeadersSpec apiCallSpec = WebClient.create(request.getBasePath())
.method(item.getHttpMethod()).uri(item.getPath()).accept(MediaType.valueOf(item.getAccept()))
.contentType(MediaType.valueOf(item.getContentType())).body(BodyInserters.fromObject(item.getPayload()));

return apiCallSpec.retrieve().bodyToMono(String.class);
}).subscribe();

return Mono.just("Created");

我希望通量部分发生在后台,但截至目前,一旦整个通量被流式传输,API 就会等待并响应。

最佳答案

如果我正确理解您要做什么,我可以建议您使用不同的设计。

不要在上面的(我认为是) Controller 中创建 Flux。相反,您可以在您的应用程序中创建一个 Hot Stream 的实例(在您的上下文中可以是一个 Bean),然后像这样使用该实例:

myHotStream.next(item);

您应用程序中的另一个组件可以使用相同的实例来订阅它。

在此处阅读文档: http://projectreactor.io/docs/core/release/reference/#reactor.hotCold
另一个例子 here , 章 8. 热流

编辑

只是一个旁注。通常 HTTP 201 Created 意味着已成功创建实体。如果此创建在您发送响应后异步发生,则最好改为发送 HTTP 200 OK。您不能保证创建成功,但您可以传达请求已成功接收(例如:通过验证)。

关于spring - 立即返回 Spring 网通量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48683802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com