我想向api rest发送10万个请求。所以我有一个循环,以同步方式发送请求(完成所有请求需要几分钟)。
但最好是以异步方式发送它们,这样过程所需的时间就更少了,因为目标可以扩展它们的副本。
我读过关于completablefuture以及如何将所有结果与 allOf()
方法。
但是有没有什么方法可以让1k请求一组一组地打电话呢?因为如果我并行发送所有请求,目的地就会关闭连接。
因此,我想以1k并行请求为一组发送请求,当每个组完成时,对响应做一些处理(我不需要排序响应)
谢谢。
我想向api rest发送10万个请求。所以我有一个循环,以同步方式发送请求(完成所有请求需要几分钟)。
但最好是以异步方式发送它们,这样过程所需的时间就更少了,因为目标可以扩展它们的副本。
我读过关于completablefuture以及如何将所有结果与 allOf()
方法。
但是有没有什么方法可以让1k请求一组一组地打电话呢?因为如果我并行发送所有请求,目的地就会关闭连接。
因此,我想以1k并行请求为一组发送请求,当每个组完成时,对响应做一些处理(我不需要排序响应)
谢谢。
1条答案
按热度按时间gupuwyp21#
是的,你可以使用完全期货和它做得很容易。
假设您有一个http客户机,它在请求时返回completablefuture。
并提供批量和排序请求的服务。
所以,这里唯一需要的就是
thenCompose
方法,该方法期望从lambda获得completablefuture。将请求分组为批并创建单个
CompletableFuture
你可以用这个方法CompletableFuture.allOf