Skip to content

Feature/bjs2 97223#2181

Open
wersatil wants to merge 6 commits intophoenix-master-stream12from
feature/BJS2-97223
Open

Feature/bjs2 97223#2181
wersatil wants to merge 6 commits intophoenix-master-stream12from
feature/BJS2-97223

Conversation

@wersatil
Copy link
Copy Markdown

No description provided.

CachedPostDto cachedPostDto = cachedPostMapper.toCachedPostDto(postToPublish);
cachedPostDto.setTimeToLive(ttlPostInRedis);
cachePostRepository.save(cachedPostDto);
log.info("Пост с id: {} добавлен в Redis", postId);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

кажется что метод стал слишком сложным и выполнять много действий, надо порефачить

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне будет не хватать твоих качественных ревью "на большой земле" )

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));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а если followerIds() будет пустой?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Точно. Что-то я забыл, что в логах тоже могут быть NullPointerException.


@Override
public void updateFeeds(PostEvent postEvent) {
for (long followerId : postEvent.followerIds()) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если будет много фоловеров то это будет очень медленно, хорошо бы распаралелить и userServiceClient возвращал бы не 1 пользователя а сразу батчами, чтобы реже ходить по http

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Сделал многопоточность, а в userServiceClient он будет очень редко ходить. Он туда пойдет только в следующем случае: если у пользователя почему-то вообще не оказалось фида, он сходит посмотреть, а вообще пользователь такой существует или где-то ошибка? Если существует, ну ок, сделаем ему тогда фид с нуля.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Но с другой стороны, а если ему придется раз 5 туда подряд сходить? Сделал тогда так: изначально всех фоловероа отправляю на проверку и возвращаю список тех, кто уже точно существует. А свой старый поход оставил запасным на тот случай, если при первоначальном походе мы словим ошибку.

try {
Thread.sleep(100);
} catch (InterruptedException ignored) {}
cacheFeedRepository.save(cachedFeedDto);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а если объект уже поменялся пока мы спали?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я даже больше того скажу: мы совершенно точно тут проспим изменение объекта. Потому что мы спать пошли именно потому, что он занят изменением ) Но это мне только сейчас пришло в голову, когда ты написал ) Убрал спячку, добавил заново скачивание и изменение этого обновленного объекта из БД.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants