Пружинное реактивное программирование противодавления

Я новичок в реактивном программировании. Может кто-нибудь объяснить, что происходит, когда вызывается mono.subscribe или какой-либо обработчик конвейера обработки данных? Я прочитал из документации, что концепция противодавления - это то, сколько данных способна получить потребляющая сторона. Но у меня вопрос об асинхронном выполнении обработчиков. Когда некоторые данные публикуются издателем, как вызывается подписка? Как обработчики могут читать переменные из стека?

void makeHttpRequest(MyRequest myRequest, String endpoint) {
    SomeOtherObject some = getSomeData(); 
    myWebClient.post()
        .uri(URI.create(endpoint))
        .body(Mono.just(myRequest), MyRequest.class)
        .exchange()
        .flatMap(clientResponse -> {
            return clientResponse.bodyToMono(MyResponse.class);
        })
        .map(resp -> {
            Map<String, Object> data = new HashMap<>();
            data.put("request", myRequest);// I can access myRequest. But how?
            data.put("response", resp);
            data.put("more", some);// same question as myRequest
            return data;
        })
        .subscribe(data -> {
            MyRequest req = data.get("request");
            MyResponse resp = data.get("response");
        })
}

0 ответов

Другие вопросы по тегам