기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SQS에서 메시지를 적시에 처리
제한 시간 초과 설정은 애플리케이션에서 메시지를 처리하고 삭제하는 데 얼마나 걸리느냐에 따라 다릅니다. 예를 들어 애플리케이션에서 메시지를 처리하려면 10초가 필요한데 제한 시간 초과 값을 15분으로 설정한다면, 이전의 메시지 처리 시도가 실패할 경우 다시 메시지 처리를 시도하기 위해 비교적 오랜 시간을 기다려야 합니다. 또한 애플리케이션에서 메시지를 처리하려면 10초가 필요한데 제한 시간 초과 값을 불과 2초로 설정한다면, 원래 소비자가 아직 메시지를 처리하는 동안 다른 소비자로부터 중복 메시지를 받을 수 있습니다.
메시지 처리 시간을 충분히 확보하려면 다음 전략 중 하나를 사용하세요.
-
메시지 처리 소요 시간을 알고 있거나 합리적으로 추정할 수 있는 경우, 메시지의 제한 시간 초과를 메시지 처리와 삭제에 소요되는 최대 시간으로 연장합니다. 자세한 내용은 표시 제한 시간 구성을 참조하세요.
-
메시지를 처리하는 데 걸리는 시간을 모르는 경우 소비자 프로세스에 대한 하트비트를 생성합니다. 초기 표시 제한 시간(예: 2분)을 지정한 다음 소비자가 메시지에서 계속 작업하는 경우 표시 제한 시간을 1분마다 2분씩 연장합니다.
중요
최대 표시 제한 시간은 Amazon SQS가
ReceiveMessage
요청을 수신한 시간으로부터 12시간입니다. 표시 제한 시간을 연장해도 최대 12시간이 재설정되지는 않습니다.또한
ReceiveMessage
요청으로 타이머가 시작되기 때문에 개별 메시지의 제한 시간을 전체 12시간(예: 43,200초)으로 설정하지 못할 수도 있습니다. 예를 들어 메시지를 수신한 후VisibilityTimeout
이 43,200초인ChangeMessageVisibility
호출을 전송하여 즉시 최대 12시간을 설정하면 실패할 가능성이 높습니다. 하지만 43,195초 값을 사용하면ReceiveMessage
를 통해 메시지를 요청하는 것과 표시 제한 시간을 업데이트하는 것 사이에 상당한 지연이 있는 경우가 아니면 작동합니다. 소비자에게 12시간 이상 필요한 경우 Step Functions 사용을 고려하세요.