2
我試圖用kotlin使用新的Spring WebFlux框架。我找不到在哪裏我錯了,此代碼(爲myService):解碼ByteArray與春天5 WebFlux框架
fun foo(): Flux<ByteArray> {
val client = WebClient.create("http://byte-array-service")
return client
.get()
.uri("/info")
.accept(MediaType.APPLICATION_OCTET_STREAM)
.exchange()
.flatMapMany {
r -> r.bodyToFlux(ByteArray::class.java)
}
}
這個方法返回通量與7893個字節,我知道有沒有被字節數組服務發送的所有字節。如果我使用舊式休息模板一切正常
fun foo(): Flux<ByteArray> {
val rt = RestTemplate()
rt.messageConverters.add(
ByteArrayHttpMessageConverter())
val headers = HttpHeaders()
headers.accept = listOf(MediaType.APPLICATION_OCTET_STREAM)
val entity = HttpEntity<String>(headers)
val r = rt.exchange("http://byte-array-service/info", HttpMethod.GET,entity, ByteArray::class.java)
return Flux.just(r.body)
}
返回從字節數組服務
這裏發出的所有274124個字節是我的消費者
fun doReadFromByteArrayService(req: ServerRequest): Mono<ServerResponse> {
return Mono.from(myService
.foo()
.flatMap {
accepted().body(fromObject(it.size))
})
}
所以,在你試圖從流量消耗數據的一些其他功能,您可以只讀7893字節是? –
你可以嘗試使用Spring的'DataBuffer'類型嗎?從中提取字節數組很容易,並且可以利用它的有趣屬性(如零拷貝和緩衝池)。 –
@Orest是的,你是正確的 –