-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
리뷰 수정 #15
base: main
Are you sure you want to change the base?
리뷰 수정 #15
Conversation
var event = queue.take(); | ||
List<UpdateViewCountCommand> commands = new ArrayList<>(); | ||
ViewPostEvent event; | ||
while ((event = queue.poll()) != null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
queue가 계속 차 있는 경우에는 무한 루프에 빠지게 될 것 같네요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확인해주셔서 감사합니다.
Threshold를 설정하도록 변경했습니다 :)
@PostConstruct | ||
public void init() { | ||
executorService.submit( | ||
executorService.scheduleWithFixedDelay( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
executorService가 로직을 제대로 실행한다는 것은 어떻게 테스트 할 수 있을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
말씀해주신대로, 비동기 프로세스 생성에 대한 부분과, 비즈니스 로직 처리에대한 부분을 분리하여 각각 테스트하도록 수정했습니다.
감사합니다 :)
Comment
뭔가 고민이 많았던 PR 이었습니다.
Write back 전략 자체는 괜찮은것 같은데, 결국 레디스 데이터를 mysql에 다시 쓰는 과정을 어떻게 할지가 관건이었네요!
다 구현하고보니.. 커맨드를 모아서 짧은 간격으로 배치 업데이트를 하는게 뭔가 괜찮은 방법같기도.. 하네요? ㅎㅎㅎ
배치 save를 위해 Jpa Repository의 save()를 사용하지 않고, entitymanager를 사용했는데요~
0.1초에 한 번씩 배치가 돌아간다고 생각하니 너무 잦은것 같기도 하고..
또 어떻게 보면 겨우 1초에 10번 WRITE하는 것으로 조회수 저장을 최적화 하는거니 괜찮은 것 같기도 하고..
이 부분에 대해서도 의견 주시면 감사드리겠습니다 :)