события от внешнего сервиса. События имеют одним из параметров UUID. Но вполне реальная ситуация, когда может прийти много РАЗНЫХ событий, но с одним UUID. Абсолютно валидная ситуация. Проблема в том, что мне нужно зарегистрировать это событие на другом сервисе, но только 1 раз для одного uuid.
Регистрация события - просто URL вызов.
Пока сделал так, что при получении события создаю некий кэш, в который складываю связку UUID события - Promise
Но, судя по всему, события приходят быстрее, чем успевают складываться в кэш.
Т.е. у меня сейчас конструкция типа
createEntity = (uuid, cache) => {
let entity = cache.get(uuid)
if (entity) {
return entity;
}
entity = new Promise((res, rej) => {
...
}
cache.put(entity);
return entity
}
Но по логам получается, что вызов регистрации события проходит несколько раз
Может я что-то не так делаю?
Кэш в данном случае - простой глобальный объект.
Нужно запонить, что уже отправил запрос и ждать первый промис.
Событие с повторных uuid может прийти через час скажем?
А функция проверки синхронная?
Это псевдокод, или реальный? Если реальный, то put неправильный
А как часто возникают повторные запросы? Я вижу экспирацию кэша через 3 часа
Обсуждают сегодня