【发布时间】:2018-08-24 07:25:22
【问题描述】:
我正在使用 Spring WebFlux 编写 http 爬虫,它很容易并行执行并具有 HTTP 超时:
val sitesToCrawl: Flux<String> = streamOfUrl()
val concurrencyLimit = 100
sitesToCrawl.flatMap(
{ WebClient.create().get().uri(it).exchange().timeout(Duration.ofSeconds(10)) },
concurrencyLimit
)
但是如何限制页面响应大小,例如我不想为每个 URL 下载超过 500KB 的数据。读取 HTTP 标头 Content-Length 不可靠。我想我需要降低一层并直接使用字节缓冲区和 Netty 事件,但是使用 Flux/Mono 来包装它以继续使用这些原语会很好
【问题讨论】:
标签: spring-boot spring-webflux