Java 如何使用Reactor处理来自API的大型JSON响应?

Java 如何使用Reactor处理来自API的大型JSON响应?,java,reactive-programming,project-reactor,Java,Reactive Programming,Project Reactor,API使用一个JSON对象来响应,该对象具有一个对象数组,比如{“items”:[{…},{…},…,,以及我们需要处理的数据。问题是数组有+1.000个对象,并且端点响应速度慢,因此流需要很多秒才能完成,而且我们的“bloking”编程模型使用ApacheHttpClient来使用端点,Jackson来序列化响应,我们等待得到完整的主体来解析包含数组的所有对象,而不是在每个元素出现时进行处理,从而节省了内存使用时间,因为一旦处理完一个元素,我们就可以让GC释放使用的内存y元素 我如何使用Rea

API使用一个JSON对象来响应,该对象具有一个对象数组,比如
{“items”:[{…},{…},…,
,以及我们需要处理的数据。问题是数组有+1.000个对象,并且端点响应速度慢,因此流需要很多秒才能完成,而且我们的“bloking”编程模型使用ApacheHttpClient来使用端点,Jackson来序列化响应,我们等待得到完整的主体来解析包含数组的所有对象,而不是在每个元素出现时进行处理,从而节省了内存使用时间,因为一旦处理完一个元素,我们就可以让GC释放使用的内存y元素

我如何使用Reactor项目在数据到来时使用响应?更改我们正在使用的HTTP客户端和/或序列化程序没有问题。此外,我们正在使用Java 8和Spring MVC以及Spring 4.3,但我们可以将该项目移到即将发布的Spring上


注意:端点是第三方API,是HTTP 1.1服务器的一种简单访问方式,我们无法对其工作方式进行更改,例如添加分页或类似的操作。

即将推出的Spring Web反应性框架支持此用例,当前在选择Spring Boot 2.0+Web反应性依赖项时,可通过start.Spring.io获得西

当您使用输入参数或返回值时,处理的每个步骤都是异步和非阻塞的,Jackson用于序列化每个单独的元素,以便允许您序列化/反序列化大型且可能有限的元素流。在这种情况下,Spring将负责识别ar中的单个JSON元素ray进行反序列化,或添加JSON数组的
[
]
进行序列化。这还允许使用Twiter JSON API等JSON流


请注意,一旦Jackson将支持异步非阻塞处理,我们将更新Spring Framework 5编解码器以在本机上使用它。

谢谢Sebastien。因此我需要使用Spring的
WebClient
,而不是Apache HttpClient客户端或旧的
RestTemplate
。对吗?类似于
新WebClient的东西(新的reactor HttpClientRequestFactory()).perform(HttpRequestBuilders.get(“http://example.com)。
在哪里可以找到问题的解决方案?我面临着同样的问题,响应中有一个“条目”,我不知道如何解决它。重构暂时被冻结,因此我无法测试Spring 5新的WebClient library+Reactor:(