인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

보키님의 프로필 이미지

작성한 질문수

RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기

19.DB 연동 메시지큐의 트랜잭션 처리 개요

강의와 살짝 무관하지만.. MQ에 대한 질문이 있습니다!

해결된 질문

작성

·

152

0

RabbitMQ도 충분히 강력한 기능을 제공하는 것으로 보입니다.

근데 이제 한번 소비한 메시지는 소비하면서 어딘가에 또 저장하지 않는 이상 재시도가 어려운것으로 알고있습니다.

현업에서 RabbitMQ를 도입하시고 사용하시면서 Kafka의 어떤 토픽의 0번 오프셋부터 읽기(earliest)같은 요구사항이 있었던 적은 없으셨는지 궁금합니다!

답변 1

0

코드빌런님의 프로필 이미지
코드빌런
지식공유자

안녕하세요.

Queue를 유지하는 방식은 여러가지 유형이 지원됩니다. 데드레터가 아니더라도 구성하기 나름이라고 생각합니다.

가장 쉬운건 팬아웃으로 지정한 뒤 메시지를 여러 큐에 복제하는 방식도 있고

보관하는 방식 (MessageDeliveryMode.PERSISTENT 옵션이나 Lazy Queue)등도 있고

로직으로 처리 (로그 파일 떨구기, 큐 전송 전에 raw 를 DB에 저장)

등 간접 방식으로 처리하는 게 하나 있을거고

클러스터를 구성해서 복제를 하되 특정 노드는 백업용도로만 사용하면 소실이 되더라도 백업본을 뒤져오면 될거 같긴 합니다. 시도해보진 않았으나 지원되는 방식은 많으니 고민하기 나름이라고 봅니다.

 

두번째는 마지막 강의에 보면 TCC에 대한 내용이 나옵니다.

이때 DB에 저장한 상태에서 컨슈머를 처리한족에서 시간 배치, 일배치 등으로 전체 raw 데이터의 대사 비교를 요청하면 API 형태로 재전송하는 규약을 만들어주면 됩니다.

즉, 큐를 어딘가에 저장하고 있다가 특정 오프셋 부터 재전송하는 API를 제공하면 문제 없이 해당 요건도 처리가 가능합니다.

 

답변이 되었는지 모르겠네요.

완강이 얼마 남지 않았으니 화이팅 하세요!

감사합니다.

보키님의 프로필 이미지
보키
질문자

오..... 감사합니다!!!

보키님의 프로필 이미지

작성한 질문수

질문하기