Amazon SQS 제한 시간 초과 - Amazon Simple Queue Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SQS 제한 시간 초과

소비자가 대기열에서 메시지를 수신하고 처리하면 메시지는 계속 대기열에 있습니다. Amazon SQS에서 메시지를 자동으로 삭제하지 않습니다. Amazon SQS가 분산 시스템이므로 소비자가 메시지를 실제로 받는지 보장할 수 없습니다 (예를 들어, 연결 문제 또는 소비자 애플리케이션 문제로 인해). 또한, 소비자는 메시지를 수신하고 처리한 후 대기열에서 이 메시지를 삭제해야 합니다.


	            제한 시간 초과

메시지를 수신한 직후에는 메시지가 대기열에 그대로 있습니다. 다른 소비자가 메시지를 다시 처리하지 못하게 하기 위해 Amazon SQS에서제한 시간 초과는 Amazon SQS에서 다른 소비자가 메시지를 수신하고 처리하지 못하게 하는 기간을 말합니다. 메시지의 기본 제한 시간은 30초입니다. 최소 값은 0초입니다. 최대 시간은 12시간입니다. 콘솔을 사용해 대기열의 제한 시간 초과를 구성하는 방법에 대한 자세한 내용은 단원을 참조하십시오.대기열 매개 변수 구성 (콘솔).

참고

표준 대기열의 경우 제한 시간 초과를 설정해도 메시지가 두 번 이상 수신되지 않는다고 장담할 수 없습니다. 자세한 정보는 최소 1회 전송을 참조하십시오.

FIFO 대기열에서는 다음과 같이 생성자 또는 소비자가 여러 번 재시도할 수 있도록 허용합니다.

  • 생성자가 실패한 SendMessage 작업을 감지한 경우, 동일한 메시지 중복 제거 ID를 사용하여 필요한 횟수 만큼 여러 번 재전송을 시도할 수 있습니다. 생성자가 중복 제거 간격이 만료되기 전에 최소 한 개의 승인을 수신한다고 가정하면 여러 번 재시도를 해도 메시지의 순서에 영향을 미치지도 복제를 도입하지도 않습니다.

  • 소비자가 실패한 ReceiveMessage 작업을 감지한 경우, 동일한 수신 요청 시도 ID를 사용하여 필요한 횟수 만큼 여러 번 재시도할 수 있습니다. 소비자가 제한 시간 초과가 만료되기 전에 최소 한 개의 승인을 수신한다고 가정하면 여러 번 재시도를 해도 메시지의 순서에는 영향을 미치지 않습니다.

  • 메시지 그룹 ID가 있는 메시지를 수신한 경우, 동일한 메시지 그룹 ID에 대한 메시지는 그 메시지를 삭제하거나 메시지가 표시되는 경우가 아니라면 더 이상 반환되지 않습니다.

이동 중인 메시지

Amazon SQS 메시지에는 세 가지 기본 상태가 있습니다.

  1. 생산자가 대기열로 전송.

  2. 소비자가 대기열에서 수신.

  3. 대기열에서 삭제.

메시지는 다음과 같이 간주됩니다.저장되어 있습니다생산자가 대기열로 전송했지만 소비자가 대기열에서 아직 수신하지 않은 후 (즉, 주 1과 2 사이). 저장된 메시지 수에는 할당량이 없습니다. 메시지는 다음과 같이 간주됩니다.비행 중소비자가 대기열에서 수신했지만 대기열에서 아직 삭제되지 않은 후 (즉, 상태 2와 3 사이). 이동 중인 메시지 수에는 할당량이 있습니다.

중요

기내 메시지에 적용되는 할당량은 다음과 관련이 없습니다.무제한저장된 메시지 수입니다.

대부분의 표준 대기열에는 (대기열 트래픽 및 메시지 백로그에 따라 다름) 최대 약 120,000개의 이동 중 메시지 (소비자가 대기열에서 수신했지만 대기열에서 아직 삭제되지 않음) 가 최대 120,000개까지 있을 수 있습니다. 사용하는 동안 이 할당량에 도달하는 경우짧은 폴링, Amazon SQSOverLimit오류 메시지를 받게 됩니다. 사용하는 도구긴 폴링Amazon SQS에서 오류 메시지를 반환하지 않습니다. 이 할당량에 도달하지 않도록 하려면 메시지를 처리한 후 대기열에서 삭제해야 합니다. 또한 메시지를 처리하는 데 사용하는 대기열의 수를 늘릴 수 있습니다. 할당량 증가를 요청하려면 지원 요청을 제출하십시오.

FIFO 대기열에는 최대 20,000개의 이동 중 메시지 (소비자가 대기열에서 수신하지만 대기열에서 아직 삭제되지 않음) 가 최대 20,000개까지 있을 수 있습니다. 이 할당량에 도달해도 Amazon SQS에서 오류 메시지를 반환하지 않습니다.

중요

FIFO 대기열 작업 시DeleteMessage요청이 가시성 시간 초과 기간 밖에서 수신되면 작업이 실패합니다. 표시 시간 초과가 0초이면 메시지를 보낸 것과 동일한 밀리초 이내에 삭제해야 합니다. 그렇지 않으면 중단된 것으로 간주됩니다. 이로 인해 Amazon SQS가 동일한 응답에 중복 메시지를 포함할 수 있습니다.ReceiveMessage작업MaxNumberOfMessages매개변수가 1보다 큽니다. 자세한 내용은 단원을 참조하십시오.Amazon SQS FIFO API의 작동 방식.

제한 시간 초과 설정

제한 시간 초과는 Amazon SQS에서 메시지를 반환할 때 시작됩니다. 이 시간 동안 소비자는 메시지를 처리하고 삭제합니다. 하지만 소비자가 메시지를 삭제하기 전에 실패할 경우 제한 시간 초과가 만료되기 전에 시스템에서 해당 메시지에 대한 DeleteMessage 작업을 호출하지 않으면 다른 소비자가 메시지를 볼 수 있게 되고 메시지가 다시 수신됩니다. 메시지가 한 번만 수신되어야 하는 경우 소비자는 제한 시간 초과 기간 내에 메시지를 삭제해야 합니다.

모든 Amazon SQS 대기열에는 30초의 기본 제한 시간 초과 설정이 있습니다. 전체 대기열에 대해 이 설정을 변경할 수 있습니다. 일반적으로 애플리케이션에서 대기열의 메시지를 처리하고 삭제하는 데 소요되는 최대 시간으로 제한 시간 초과를 설정해야 합니다. 메시지를 수신할 때 전체 대기열 제한 시간을 변경하지 않고도 반환된 메시지에 대해 특별한 제한 시간 초과를 설정할 수도 있습니다. 자세한 내용은 적시에 메시지 처리 단원의 모범 사례를 참조하십시오.

메시지를 처리하는 데 걸리는 시간을 모르는 경우심장 박동소비자 프로세스: 초기 가시성 제한 시간 (예: 2분) 을 지정한 다음 소비자가 메시지를 계속 작업하는 한 분당 2분씩 가시성 제한 시간을 계속 연장합니다.

중요

최대 제한 시간 초과는 Amazon SQS에서 받는 시간으로부터 12시간입니다.ReceiveMessage요청. 제한 시간 초과를 연장해도 최대 12시간이 재설정되지 않습니다.

또한 개별 메시지의 시간 제한을 전체 12시간 (예: 43,200초) 으로 설정하지 못할 수 있습니다.ReceiveMessage요청에서 타이머를 시작합니다. 예를 들어 메시지를 수신하고 메시지를 전송하여 최대 12시간을 즉시 설정하는 경우ChangeMessageVisibility사용을 통한 호출VisibilityTimeout43,200 초와 같으면 실패할 수 있습니다. 그러나 43,195 초 값을 사용하면 메시지를 요청하는 사이에 상당한 지연이 발생하지 않는 한 작동합니다.ReceiveMessage제한 시간 초과를 업데이트합니다. 소비자가 12시간 이상 필요한 경우에는 Step Functions 사용을 고려하십시오.

메시지에 대한 제한 시간 초과 변경

대기열에서 메시지를 수신하여 처리하기 시작하다 보면 이 대기열의 표시 제한 시간이 부족해질 수 있습니다(처리한 메시지를 삭제해야 하는 경우도 있음). 메시지의 제한 시간을 단축하거나 늘리기 위해 ChangeMessageVisibility 작업을 사용하여 새 제한 시간 값을 지정할 수 있습니다.

예를 들어 대기열의 시간 제한이 60초이고 메시지를 받은 뒤로 15초가 흘렀는데 VisibilityTimeout을 10초로 설정하여 ChangeMessageVisibility 호출을 보내면, ChangeMessageVisibility 호출 시점으로부터 10초를 세기 시작합니다. 따라서 표시 제한 시간(총 25초)을 처음 변경하고 10초가 지난 뒤에 이를 변경하려 하거나 메시지를 삭제하려고 하면 오류가 발생합니다.

참고

새로운 제한 시간은 ChangeMessageVisibility 작업을 호출한 시간부터 적용됩니다. 또한, 새 제한 시간은 특정 메시지 수신에만 적용됩니다. ChangeMessageVisibility는 메시지 수신이나 이후 대기열의 제한 시간에 영향을 미치지 않습니다.

메시지에 대한 제한 시간 초과 종료

대기열에서 메시지를 수신할 때 실제로 해당 메시지를 처리 및 삭제하지 않아도 됨을 알 수 있습니다. Amazon SQS 사용하면 특정 메시지에 대한 가시성 제한 시간을 종료할 수 있습니다. 그리고 나면 메시지가 시스템의 다른 구성 요소에 즉시 표시되어 처리할 수 있습니다.

호출 후 메시지의 가시성 제한 시간을 종료하려면ReceiveMessage, 호출ChangeMessageVisibilityVisibilityTimeout0초로 설정합니다.