- 일정 시간마다 채팅 차단된 사용자의 전체 메시지 가림 처리
- Java 17
- Springboot 3.0.2
- Spring Batch
- Spring Scheduler
- Spring Data JPA
- Redis
- Mongo DB
- Mysql8
기능 | 설명 |
---|---|
매시지 가림 처리 | 채팅 차단된 사용자의 전체 메시지 가림 처리 |
@RequiredArgsConstructor
private class MyTasklet implements Tasklet {
private final ChatRepository chatRepository;
private final UserRepository userRepository;
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
List<User> blockedUsers = userRepository.findAllByIsDone(false);
blockedUsers.forEach(blockedUser -> {
List<Message> messages = chatRepository.findAllByTopicIdAndSender(
blockedUser.getTopicId(), blockedUser.getName());
messages.forEach(message -> {
message.hide();
chatRepository.save(message);
});
blockedUser.done();
userRepository.save(blockedUser);
});
return RepeatStatus.FINISHED;
}
}
@Scheduled(cron = "0 */5 * * * *")
public void runJob() {
HashMap<String, JobParameter<?>> confMap = new HashMap<>();
confMap.put("time", new JobParameter(System.currentTimeMillis(), long.class));
JobParameters jobParameters = new JobParameters(confMap);
try {
jobLauncher.run(job, jobParameters);
} catch (JobExecutionAlreadyRunningException | JobInstanceAlreadyCompleteException |
JobParametersInvalidException | JobRestartException e) {
log.error(e.getMessage());
}
}
@ControllerAdvice 클래스에서 body에 데이터 넣어서 반환할 때 view를 찾는 문제
spring data redis 데이터 조회 시 이상하게 나오는 문제
brew services start redis로 실행 시 주의할 점
StompSession send() ClassCastException
StompSession BlockingQueue 메시지 전달 안되는 문제
NHN 분산 시스템에서 데이터를 전달하는 효율적인 방법
embedded mongoDB Set the de.flapdoodle.mongodb.embedded.version property 오류
testcontainer로 redis 테스트하기 testcontainer BeforeAllCallback 여러번 호출되는 문제