java - 是否可以流式传输嵌套 Json 列表?

标签 java spring spring-mvc spring-webflux

API 响应以下内容 "application/json" body 类型构造:

{
  "transactions": [
    {
      "transaction": "1",
    },
    {
      "transaction": "2",
    },
        {
      "transaction": "3",
    }
  ]

}

基本上我将它映射到..

    public class Transactions {
     private List<Transaction> transactions;
       ...
    }

目前我将其检索为 Mono<Transactions> ,但它有缺点 - 它在内存中缓冲整个列表。

Spring Reactive API ,是否可以将交易列表作为 Flux 处理,而不将其作为一个整体缓冲在内存中?

非常感谢!

最佳答案

在评论中收到更多信息后,这就是问题的答案。

如果 webflux 应用程序正在对非 webflux api 进行阻塞调用,则应采取措施将调用包装在 Mono#fromCallable 中。并放置在它自己的线程上,以便它不会干扰其余的非阻塞线程。所有这些都记录在 react 器文档中的 faq 下。

阻塞调用将始终返回单个响应,即 Mono所以在上面的情况下它将返回 List<Transaction> .

由于我们在阻塞调用后已经有了完整的列表,所以大多数时候没有实际目的将其放入通量中,然后将它们一一推送到客户端。

因此返回 Mono<List<Transaction>>到调用客户端可能是可行的方法。

关于java - 是否可以流式传输嵌套 Json 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60154848/

相关文章:

java - 控制台返回扫描仪捕获的第一件事,而不移动到其他代码块

java - 每当有键匹配时添加两个映射的值

java - 为不同的策略注入(inject)相似的依赖类型

java - 简单框架 XML 删除空属性

java - 从弹出窗口复制 eclipse 中的变量值的任何插件或快捷方式?

java - 嵌套异常是 org.springframework.beans.factory.BeanCreationException : Could not autowire field in restful web services

java - spring boot starter security post 方法不起作用

Java Spring-MVC 应用程序不发送 CSS 和 JS 文件。错误404

java - 在 Spring boot 应用程序中传递常量消息的正确方法(messages.properties 或 Constant 类)

java - Spring MVC 中的可配置验证