강의와 살짝 무관하지만.. MQ에 대한 질문이 있습니다!
RabbitMQ도 충분히 강력한 기능을 제공하는 것으로 보입니다.
근데 이제 한번 소비한 메시지는 소비하면서 어딘가에 또 저장하지 않는 이상 재시도가 어려운것으로 알고있습니다.
현업에서 RabbitMQ를 도입하시고 사용하시면서 Kafka의 어떤 토픽의 0번 오프셋부터 읽기(earliest)같은 요구사항이 있었던 적은 없으셨는지 궁금합니다!
Answer 1
0
안녕하세요.
Queue를 유지하는 방식은 여러가지 유형이 지원됩니다. 데드레터가 아니더라도 구성하기 나름이라고 생각합니다.
가장 쉬운건 팬아웃으로 지정한 뒤 메시지를 여러 큐에 복제하는 방식도 있고
보관하는 방식 (MessageDeliveryMode.PERSISTENT 옵션이나 Lazy Queue)등도 있고
로직으로 처리 (로그 파일 떨구기, 큐 전송 전에 raw 를 DB에 저장)
등 간접 방식으로 처리하는 게 하나 있을거고
클러스터를 구성해서 복제를 하되 특정 노드는 백업용도로만 사용하면 소실이 되더라도 백업본을 뒤져오면 될거 같긴 합니다. 시도해보진 않았으나 지원되는 방식은 많으니 고민하기 나름이라고 봅니다.
두번째는 마지막 강의에 보면 TCC에 대한 내용이 나옵니다.
이때 DB에 저장한 상태에서 컨슈머를 처리한족에서 시간 배치, 일배치 등으로 전체 raw 데이터의 대사 비교를 요청하면 API 형태로 재전송하는 규약을 만들어주면 됩니다.
즉, 큐를 어딘가에 저장하고 있다가 특정 오프셋 부터 재전송하는 API를 제공하면 문제 없이 해당 요건도 처리가 가능합니다.
답변이 되었는지 모르겠네요.
완강이 얼마 남지 않았으니 화이팅 하세요!
감사합니다.
16 강의 메세지 retryCount의 의도
0
12
1
step 4 - fanout 관련 질문
0
67
2
dlx dlq 설정 관련
0
64
1
동적 큐 이름 설정 방법 및 SimpleRabbitListenerContainerFactory의 재정의에 따른 Retry 설정 미적용 관련 질문입니다.
0
95
1
강의 자료 관련
0
83
2
인증 에러
0
80
2
RabbitMQ에서의 트랙잭션 메시징 질문
0
109
2
Producer/Consumer 단위
0
71
2
안녕하세요 섹션2. 12번 강의에서 질문 있습니다.
0
82
2
안녕하세요 "섹션2 8. Consumer간 작업 분배" 에서 질문 있습니다.
0
88
2
컨슈머 서버 질문드립니다
0
79
2
DLQ 관련 질문
0
130
2
알림은 왜 pub sub 구조로 설계하나요?
0
148
2
Receiver를 여러개 하려면 어떻게하나요?
0
139
2
깃허브 step11 브랜치
0
97
1
DLQ 재시도 로직 처리후 DLQ에 unacked 1건이 남는거에 대해서
0
149
2
NotificationMessage가 필요한 이유 질문
0
107
2
스탭4 질문드립니다
0
150
3
생성자 질문드립니다
0
105
2
Pub/Sub & WebSocket 활용한 실시간 알림
0
211
2
채팅 방식 질문입니다!
0
138
2
챕터18 retry yml 강의 부분 질문
0
186
2
tutorial-step4 질문
0
142
2
pub/sub, producer/consumer 차이
0
261
2

