Синхронизированная реактивная цепь с Reactor - PullRequest
0 голосов
/ 18 июня 2020

У меня следующая реактивная цепочка:

CacheMono.lookup(key -> this.retrieveFromCache(tenantId, key).map(Signal::next), carId)
    .onCacheMissResume(this.retrieveFromService(tenantId, carId))
    .andWriteWith((key, signal) ->
        Mono.fromRunnable(() -> this.carCache.cacheAndGetCar(key, signal.get(), tenantId)));

Все работает нормально, когда поступает только один запрос за раз, но если поступает много запросов, retrieveFromService вызывается более одного раза.

Как я могу ограничить, чтобы только один запрос на tenantId мог вызывать функцию retrieveFromService за раз, а остальные запросы работали с кешированным ответом первого?

...