inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

16.DeadLetterQueue를 이용한 재처리

dlx dlq 설정 관련

77

slow

작성한 질문수 4

1

안녕하세요.

설정 시 String 으로 작성 된게 눈에 걸려서 확인해봤는데, Spring AMQP 2.X 에서는 다른 방법이 있어서 내용 공유 드립니다...

다른 수강생분들도 참고용으로 q&a로 남겼습니다..

감사합니다...

@Bean
public Queue orderQueue() {
    return QueueBuilder.durable(ORDER_COMPLETED_QUEUE)
            .deadLetterExchange(DLX)       // Available since Spring AMQP 2.x
            .deadLetterRoutingKey(DLQ)     // Available since Spring AMQP 2.x
//          .withArgument("x-dead-letter-exchange", DLX)    // Spring AMQP 1.x compatible
//          .withArgument("x-dead-letter-routing-key", DLQ) // Spring AMQP 1.x compatible
            .ttl(5000)
            .build();
}

spring-boot jpa websocket rabbitmq

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. slow님.

Dead Letter Exchange(DLX)와 Dead Letter Queue(DLQ)의 설정에 대해 공유해 주셔서 감사합니다. Spring AMQP 2.x 버전부터는 더 간편한 방법으로 DLX 및 DLQ를 설정할 수 있다는 점이 많은 사용자에게 유용하게 다가올 것입니다.

Dead Letter Exchange(DLX)와 Dead Letter Queue(DLQ) 설정

Spring AMQP 2.x에서는 다음과 같은 방법으로 DLX 및 DLQ를 설정할 수 있습니다:

  1. DLX 및 DLQ 설정:
    • QueueBuilder 클래스를 활용하여 deadLetterExchangedeadLetterRoutingKey 메서드를 사용하면 됩니다. 이는 더 간결하고 명확하게 설정을 할 수 있게 해줍니다.
   @Bean
   public Queue orderQueue() {
       return QueueBuilder.durable(ORDER_COMPLETED_QUEUE)
               .deadLetterExchange(DLX)       // 설정하는 부분
               .deadLetterRoutingKey(DLQ)     // 설정하는 부분
               .ttl(5000)                     // 메시지 유효 시간 설정
               .build();
   }
  1. Spring AMQP 1.x에서의 설정:
    • 이전 버전에서는 withArgument 메서드를 통해 직접 큐 아규먼트를 작성하여 설정해야 했습니다.
   .withArgument("x-dead-letter-exchange", DLX)
   .withArgument("x-dead-letter-routing-key", DLQ)

DLX와 DLQ를 사용하는 이유는 메시지의 처리 실패 시 이를 다른 경로로 처리해 안정성을 높이고, 메시지의 유실을 방지하기 위함입니다. 이러한 설정을 통해 시스템의 복잡도를 줄이고, 메시징의 유연성을 증대시킬 수 있습니다.

다른 수강생에게도 도움이 될 만한 링크를 제공해드릴 수 있습니다:
- Spring AMQP DLX와 DLQ 설정에 관한 질문과 답변

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

16 강의 메세지 retryCount의 의도

0

40

2

step 4 - fanout 관련 질문

0

78

2

동적 큐 이름 설정 방법 및 SimpleRabbitListenerContainerFactory의 재정의에 따른 Retry 설정 미적용 관련 질문입니다.

0

115

1

강의 자료 관련

0

94

2

인증 에러

0

99

2

RabbitMQ에서의 트랙잭션 메시징 질문

0

118

2

Producer/Consumer 단위

0

74

2

안녕하세요 섹션2. 12번 강의에서 질문 있습니다.

0

93

2

안녕하세요 "섹션2 8. Consumer간 작업 분배" 에서 질문 있습니다.

0

97

2

컨슈머 서버 질문드립니다

0

84

2

DLQ 관련 질문

0

141

2

알림은 왜 pub sub 구조로 설계하나요?

0

159

2

Receiver를 여러개 하려면 어떻게하나요?

0

151

2

깃허브 step11 브랜치

0

105

1

DLQ 재시도 로직 처리후 DLQ에 unacked 1건이 남는거에 대해서

0

162

2

NotificationMessage가 필요한 이유 질문

0

114

2

스탭4 질문드립니다

0

162

3

생성자 질문드립니다

0

116

2

Pub/Sub & WebSocket 활용한 실시간 알림

0

229

2

채팅 방식 질문입니다!

0

144

2

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

0

217

1

챕터18 retry yml 강의 부분 질문

0

196

2

tutorial-step4 질문

0

155

2

pub/sub, producer/consumer 차이

0

275

2