상세 컨텐츠

본문 제목

알림 푸시용 배치서버 플로우

관리X 과거글

by 까먹기전에 2020. 1. 15. 17:28

본문

반응형

 

 

 

프레임워크

 

** 스프링 부트 프레임워크 사용

 

** 어노테이션 @Scheduled 사용

 

** 오라클과 mysql 2개의 데이터소스에서 정보를 가져와야해서

 멀티데이터소스로 구조를 잡음

 

 

 

=====pom.xml=====

 

 

스프링부트에서 스케쥴러를 사용하기 위해

 


org.springframework.batch
spring-batch-core
2.2.1.RELEASE

 

 

 

 

파이어베이스 , 푸시에 필요한 라이브러리

 

 



com.google.firebase
firebase-admin
6.7.0


io.grpc
grpc-core


io.grpc
grpc-api


io.grpc
grpc-netty-shaded



 

 

 

 

 

 

개인적으로 생각하는 무난한 구조

 

 

*시간간격과 한번에 가져올 데이터건수는 상황에 맞게 변경

 

 

[발송 배치]

 

5초마다 DB에 발송 대기 100건 긁어옴

 

토큰Id , 제목 , 내용이 없을시 실패로 디비 업데이트

 

발송 실패시 실패로 디비 업데이트

 

발송 성공시 성공으로 디비 업데이트

 

 

 

[발송 재처리 배치]

 

5초마다 DB에 실패한 발송 대기 100건 긁어옴(발송시도 3회 미만)

 

토큰Id , 제목 , 내용이 없을시 실패로 디비 업데이트 (발송시도횟수+1 증가)

 

발송 실패시 실패로 디비 업데이트(발송시도횟수+1 증가)

 

발송 성공시 성공으로 디비 업데이트

 

**에러상황을 디비로 남기니 시간대별로 실패원인을 모아서 보기가 좋았음

 

 

 

 

발송 실패로 db업데이트시 실제 에러메시지 꼭 넣기

발송상태는 대기 , 성공 , 실패 3개면 충분한거같습니다.

 

 

 

예외상황이나 조언부탁드립니다.!

 

 

 

 

 

 

 

 

다음에는 똑같은 구조로 메일 발송 (google smtp) 이용해서 메일 발송을 해 볼 예정입니다...

 

 

 

 

 

 

 

관련글 더보기