[디커플링 애플리케이션] SQS - Dead Letter Queue

728x90

SQS - Dead Letter Queue

Message Visibility Timeout 내에 메시지를 처리하지 못하는 시나리오가 있다고 가정한다.

메시지는 자동으로 SQS 대기열로 복귀한다. consumer 는 메시지를 읽다가 오류가 발생하였거나 Message Visibility Timeout 를 초과하였을 수도 있다.

이런 식으로 계속해서 메시지가 대기열로 복귀를 반복하게 되면 문제가 발생한다.

즉, 이렇게 메시지가 다시 대기열로 돌아로는 과정이 반복되서 진행되는 것을 막아주기 위해 해당 과정을 몇 번 반복할 것인지 임계값을 설정할 수 있다.

이 최대 수신 임계값을 초과하면 SQS 는 메시지가 이상하다는 것을 감지한다.

즉, 많은 처리 시도가 있었지만 최종적으로는 메시지를 처리하지 못했기 때문에 해당 메시지를 Dead Letter Queue 로 보낸다.

DLQ 는 왜 필요한지에 대해서 알 필요가 있다.

DLQ 는 주로 디버깅할 때 사용한다. 즉, 임계값을 넘은 죽은 메시지들을 확인하고 원인을 분석하기 위해 사용한다.

DLQ 에 보관되는 메시지들 또한, 일정 시점이 지나면 만료되어 삭제된다.

따라서 DLQ 에 저장되는 메시지들은 보관 기간을 높게 잡는 것이 좋다.

728x90