Как я могу вызвать метод, который возвращает Mono <> и использовать его для вызова самого веб-метода?
@Component
class SampleWebFilter(private val sampleService: SampleService) : WebFilter {
override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
val accessToken =
exchange.request.headers["Authorization"]?.firstOrNull()
?: throw IllegalArgumentException("Access token must not be empty")
val res = sampleService.authorize(accessToken)
val id = res.block()?.userId
exchange.attributes["UserId"] = userId
return chain.filter(exchange)
}
}
@Component
interface SampleService {
@GET("/user")
fun authorize(accessToken): Mono<User>
}
приведенный выше код выдает исключение block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-2
Я знаю, что мы не должныне блокировать поток в netty, но как я могу использовать id из SampleService для вызова веб-метода.
Заранее спасибо.