RabbitMQ
-
안녕하세요 이번 추석에 레빗 엠큐를 딥하게는 아니고 아주 살짝 맛만 봤습니다 'RabbitMQ' 카테고리의 글 목록 dockerel.tistory.com 근데 레빗 엠큐 이거 좀 맛도리더라구요 제일 맘에 드는건 데드레터 처리하고 자동 재시도 그래서 제가 한 프로젝트 중에 이걸 어디에 한번 적용해보아야 할까 생각하다가 Redis Pub/Sub 기반으로 구현했던 실시간 알림 기능에 한번 도입을 해봤습니다 근데 이걸 왜 함? 사실 그 당시에는 레디스를 인증 파트에서 refresh token 관리를 위해 사용하고 있었기에 다른 메시지 큐와 같은 새로운 기술 스택을 도입하지 않아도 레디스 선에서 커버칠 수 있다는 생각에 도입했습니다 근데 문제는 그렇게 발생했습니다 웹 서버를 배포할 때 다중 인스턴스로 배포해버린..
RabbitMQ를 적용하며 발생한 풍부한 버그와 다양한 삽질의 향연안녕하세요 이번 추석에 레빗 엠큐를 딥하게는 아니고 아주 살짝 맛만 봤습니다 'RabbitMQ' 카테고리의 글 목록 dockerel.tistory.com 근데 레빗 엠큐 이거 좀 맛도리더라구요 제일 맘에 드는건 데드레터 처리하고 자동 재시도 그래서 제가 한 프로젝트 중에 이걸 어디에 한번 적용해보아야 할까 생각하다가 Redis Pub/Sub 기반으로 구현했던 실시간 알림 기능에 한번 도입을 해봤습니다 근데 이걸 왜 함? 사실 그 당시에는 레디스를 인증 파트에서 refresh token 관리를 위해 사용하고 있었기에 다른 메시지 큐와 같은 새로운 기술 스택을 도입하지 않아도 레디스 선에서 커버칠 수 있다는 생각에 도입했습니다 근데 문제는 그렇게 발생했습니다 웹 서버를 배포할 때 다중 인스턴스로 배포해버린..
2025.10.17 -
이번에는 메시지 단위의 트랜잭션 처리에 대해 알아보겠습니다. 이전에 백기선님의 예외와 트랜잭션에 관한 영상을 본 적이 있습니다. 그 당시에 볼 때는 이게 무슨 소리지 했었지만공부를 제대로 안했나 봅니다.이제는 무슨 소리인지 알죠. 간단히 설명드리자면 모든 블로그에서 언체크드 예외와 체크드 예외에 대해 무조건 롤백을 한다 / 롤백을 하지 않는다 로 작성해 놓은 글에 대해 비판하시는 영상이었는데요, 그 이유는 트랜잭션에는 DB 트랜잭션만 있는것이 아니고 그리고 설사 DB 트랜잭션을 의미하는 것일지라도 기본적으로 런타임 계열의 언체크드 예외는 롤백, 그 외에 체크드 예외에는 롤백을 하지 않고 커밋되는 것이 맞지만 이것도 사실 rollbackFor 혹은 try-catch 등의 처리를 통해 충분히 롤백할 수 있다..
RabbitMQ에서 Transaction 처리는?이번에는 메시지 단위의 트랜잭션 처리에 대해 알아보겠습니다. 이전에 백기선님의 예외와 트랜잭션에 관한 영상을 본 적이 있습니다. 그 당시에 볼 때는 이게 무슨 소리지 했었지만공부를 제대로 안했나 봅니다.이제는 무슨 소리인지 알죠. 간단히 설명드리자면 모든 블로그에서 언체크드 예외와 체크드 예외에 대해 무조건 롤백을 한다 / 롤백을 하지 않는다 로 작성해 놓은 글에 대해 비판하시는 영상이었는데요, 그 이유는 트랜잭션에는 DB 트랜잭션만 있는것이 아니고 그리고 설사 DB 트랜잭션을 의미하는 것일지라도 기본적으로 런타임 계열의 언체크드 예외는 롤백, 그 외에 체크드 예외에는 롤백을 하지 않고 커밋되는 것이 맞지만 이것도 사실 rollbackFor 혹은 try-catch 등의 처리를 통해 충분히 롤백할 수 있다..
2025.10.09 -
메시지들이 발행되고 ready에서 제대로 처리되지 못한 경우 unacked 상태가 되는데 만약 클라이언트에서 메시지 처리를 성공한 경우 ack 그 외에는 nack 혹은 reject 상태가 됩니다. 이렇게 메시지가 nack, reject 상태가 되거나 ttl 만료, 길이 초과 그리고 큐 설정 초과 등 특정 Dead Letter 조건이 충족한 경우 DLQ(Dead Letter Queue)로 이동됩니다.@Beanpublic Queue orderQueue() { return QueueBuilder.durable(MAIN_QUEUE) .withArgument("x-dead-letter-exchange", DLX) .withArgument("x-dead-letter-routing-ke..
DeadLetterQueue와 Retry로 재처리하기 참 쉽죠?메시지들이 발행되고 ready에서 제대로 처리되지 못한 경우 unacked 상태가 되는데 만약 클라이언트에서 메시지 처리를 성공한 경우 ack 그 외에는 nack 혹은 reject 상태가 됩니다. 이렇게 메시지가 nack, reject 상태가 되거나 ttl 만료, 길이 초과 그리고 큐 설정 초과 등 특정 Dead Letter 조건이 충족한 경우 DLQ(Dead Letter Queue)로 이동됩니다.@Beanpublic Queue orderQueue() { return QueueBuilder.durable(MAIN_QUEUE) .withArgument("x-dead-letter-exchange", DLX) .withArgument("x-dead-letter-routing-ke..
2025.10.08 -
안녕하세요. 이전 포스팅에서 용어들을 좍 정리해봤습니다. RabbitMQ 시작하기추석을 맞아 인프런의 향로님께서 추석 완강 챌린지를 열어주셨습니다. 그래서 이참에 관심있었던 강의 하나를 완주해보기로 했습니다. 바로 메시지큐 라이브러리인 RabbitMQ입니다. 사실 예전dockerel.tistory.com이제 그럼 코드로 몸통박치기 해봐야겠죠? 1. 단순 메시지 전송간단하게 하나의 큐에서 메시지를 주고 받는 과정을 보겠습니다. 메시지 전송 측은@Component@RequiredArgsConstructorpublic class Sender { private final RabbitTemplate rabbitTemplate; public void send(String message) { ..
RabbitMQ 코드로 몸통박치기안녕하세요. 이전 포스팅에서 용어들을 좍 정리해봤습니다. RabbitMQ 시작하기추석을 맞아 인프런의 향로님께서 추석 완강 챌린지를 열어주셨습니다. 그래서 이참에 관심있었던 강의 하나를 완주해보기로 했습니다. 바로 메시지큐 라이브러리인 RabbitMQ입니다. 사실 예전dockerel.tistory.com이제 그럼 코드로 몸통박치기 해봐야겠죠? 1. 단순 메시지 전송간단하게 하나의 큐에서 메시지를 주고 받는 과정을 보겠습니다. 메시지 전송 측은@Component@RequiredArgsConstructorpublic class Sender { private final RabbitTemplate rabbitTemplate; public void send(String message) { ..
2025.10.07 -
추석을 맞아 인프런의 향로님께서 추석 완강 챌린지를 열어주셨습니다. 그래서 이참에 관심있었던 강의 하나를 완주해보기로 했습니다. 바로 메시지큐 라이브러리인 RabbitMQ입니다. 사실 예전에 AI 기반 일기 서비스인 '토닥' 에서 실시간 알림을 개발할 때 레빗엠큐 도입을 좀 고민했었는데요, 결국엔 안했습니다. 이유는1. 레디스 Pub/Sub으로 어느정도 알림 기능 구현이 커버 될 것 같았고2. 괜히 도입했다가는 견고하게 구현하지 못하고 오버엔지니어링이 될 것같았기 때문입니다. 어쨌든 이번에 산 강의는 코드빌런 님의RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기입니다.개요RabbitMQ는 메시지 전송 브로커 오픈소스로 시스템간에 비동기 메시징으로 서비스간 통신을 안정적으로 그리고 효율적으로 처리..
RabbitMQ 시작하기추석을 맞아 인프런의 향로님께서 추석 완강 챌린지를 열어주셨습니다. 그래서 이참에 관심있었던 강의 하나를 완주해보기로 했습니다. 바로 메시지큐 라이브러리인 RabbitMQ입니다. 사실 예전에 AI 기반 일기 서비스인 '토닥' 에서 실시간 알림을 개발할 때 레빗엠큐 도입을 좀 고민했었는데요, 결국엔 안했습니다. 이유는1. 레디스 Pub/Sub으로 어느정도 알림 기능 구현이 커버 될 것 같았고2. 괜히 도입했다가는 견고하게 구현하지 못하고 오버엔지니어링이 될 것같았기 때문입니다. 어쨌든 이번에 산 강의는 코드빌런 님의RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기입니다.개요RabbitMQ는 메시지 전송 브로커 오픈소스로 시스템간에 비동기 메시징으로 서비스간 통신을 안정적으로 그리고 효율적으로 처리..
2025.10.06