Conversation
| CachedPostDto cachedPostDto = cachedPostMapper.toCachedPostDto(postToPublish); | ||
| cachedPostDto.setTimeToLive(ttlPostInRedis); | ||
| cachePostRepository.save(cachedPostDto); | ||
| log.info("Пост с id: {} добавлен в Redis", postId); |
There was a problem hiding this comment.
кажется что метод стал слишком сложным и выполнять много действий, надо порефачить
There was a problem hiding this comment.
Мне будет не хватать твоих качественных ревью "на большой земле" )
| containerFactory = "postContainerFactory") | ||
| public void consumeEvent(PostEvent postEvent, Acknowledgment ack) throws InterruptedException { | ||
| log.info("Из Kafka получен новый PostEvent c postId: {} и батчом followerIds, начинающимся с followerId: {}", | ||
| postEvent.postId(), postEvent.followerIds().get(0)); |
There was a problem hiding this comment.
а если followerIds() будет пустой?
There was a problem hiding this comment.
Точно. Что-то я забыл, что в логах тоже могут быть NullPointerException.
|
|
||
| @Override | ||
| public void updateFeeds(PostEvent postEvent) { | ||
| for (long followerId : postEvent.followerIds()) { |
There was a problem hiding this comment.
Если будет много фоловеров то это будет очень медленно, хорошо бы распаралелить и userServiceClient возвращал бы не 1 пользователя а сразу батчами, чтобы реже ходить по http
There was a problem hiding this comment.
Сделал многопоточность, а в userServiceClient он будет очень редко ходить. Он туда пойдет только в следующем случае: если у пользователя почему-то вообще не оказалось фида, он сходит посмотреть, а вообще пользователь такой существует или где-то ошибка? Если существует, ну ок, сделаем ему тогда фид с нуля.
There was a problem hiding this comment.
Но с другой стороны, а если ему придется раз 5 туда подряд сходить? Сделал тогда так: изначально всех фоловероа отправляю на проверку и возвращаю список тех, кто уже точно существует. А свой старый поход оставил запасным на тот случай, если при первоначальном походе мы словим ошибку.
| try { | ||
| Thread.sleep(100); | ||
| } catch (InterruptedException ignored) {} | ||
| cacheFeedRepository.save(cachedFeedDto); |
There was a problem hiding this comment.
а если объект уже поменялся пока мы спали?
There was a problem hiding this comment.
Я даже больше того скажу: мы совершенно точно тут проспим изменение объекта. Потому что мы спать пошли именно потому, что он занят изменением ) Но это мне только сейчас пришло в голову, когда ты написал ) Убрал спячку, добавил заново скачивание и изменение этого обновленного объекта из БД.
No description provided.