У меня следующая реактивная цепочка:
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 за раз, а остальные запросы работали с кешированным ответом первого?