Amazon SQS FIFO(선입선출) 대기열 - Amazon Simple Queue Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Amazon SQS FIFO(선입선출) 대기열

FIFO 큐에는 표준 대기열.

FIFO(선입선출) 대기열은 다음 예와 같이 작업 및 이벤트 순서가 중요하거나 중복 항목이 허용되지 않는 경우에 애플리케이션 간 메시징을 강화해 줍니다.

  • 사용자가 입력한 명령이 올바른 순서로 실행되도록 보장

  • 가격 수정을 올바른 순서로 전송하여 올바른 제품 가격 표시.

  • 학생이 계정 등록 전에 과정에 등록하지 못하도록 차단.

FIFO 대기열은 또한 정확히 한 번 처리하지만 초당 트랜잭션 수가 제한됨(TPS):

  • 배치 처리를 사용하면 FIFO 대기열은 API 메서드(SendMessageBatch, ReceiveMessage 또는 DeleteMessageBatch)별 초당 최대 3,000개의 트랜잭션을 지원합니다. 3,000개의 트랜잭션은 300개의 API 호출을 나타내며, 각각 10개의 메시지를 배치 처리합니다. 할당량 증가를 요청하려면 지원 요청을 제출하십시오.

  • 배치 처리가 없으면 FIFO 대기열은 API 메서드(SendMessage, ReceiveMessage 또는 DeleteMessage)별 초당 최대 300개의 API 호출을 지원합니다.

참고
  • Amazon SNS 은(는) 현재 FIFO 큐와 호환되지 않습니다.

  • FIFO 대기열의 이름은 .fifo 접미사로 끝나야 합니다. 접미사는 문자 80개의 대기열 이름 할당량에 포함됩니다. 해당 대기열이 접미사로 끝나는지 확인하여 FIFO 대기열인지 여부를 알 수 있습니다.

Amazon SQS FIFO 큐는 모든 지역에서 사용할 수 있습니다. Amazon SQS 사용 가능(단, 아시아 태평양(오사카-로컬) 리전.

Amazon SQS 콘솔을 사용하여 표준 큐를 만들고 구성하는 방법에 대한 자세한 내용은 를 참조하십시오. 생성 Amazon SQS 대기열(콘솔). Java 예는 를 참조하십시오. Amazon SQS Java SDK 예제.

FIFO 대기열과 관련된 할당량은 다음을 참조하십시오. 대기열 관련 할당량.

FIFO 대기열을 사용하는 모범 사례 참조: 다음에 대한 추가 권장 사항 Amazon SQS FIFO 대기열권장 사항 Amazon SQS 표준 및 FIFO 큐.

FIFO 큐와 클라이언트 및 서비스의 호환성에 대한 자세한 내용은 를 참조하십시오. Compatibility.

메시지 정렬

FIFO 큐는 표준 대기열. 이 대기열 유형의 가장 중요한 기능은 FIFO(선입선출) 전송정확히 1회 처리입니다.

  • 메시지가 전송 및 수신되는 순서가 엄격히 유지되며 메시지가 한 번 전송되어 소비자가 이 메시지를 처리하고 삭제할 때까지 계속 사용할 수 있습니다.

  • 중복 항목을 대기열에 삽입하지 않습니다.

또한 FIFO 큐는 메시지 그룹 단일 큐 내에서 여러 개의 순서가 지정된 메시지 그룹을 허용하는 기능입니다. FIFO 대기열 내에서 메시지 그룹의 수에는 할당량이 없습니다.

주요 용어

다음 주요 용어는 FIFO 대기열의 기능을 더 잘 이해하는 데 도움이 될 수 있습니다. 자세한 정보는 Amazon Simple Queue Service API Reference를 참조하십시오.

메시지 중복 제거 ID

The 전송된 메시지의 중복 제거에 사용되는 토큰. 특정 메시지 중복 제거 ID가 있는 메시지를 성공적으로 전송한 경우, 메시지 중복 제거 ID가 동일한 모든 메시지는 성공적으로 수신되지만 중복 제거 간격인 5분 동안은 전달되지 않습니다.

참고

메시지 중복 제거는 개별 메시지 그룹이 아닌 전체 대기열에 적용됩니다.

Amazon SQS는 메시지가 수신 및 삭제된 이후에도 메시지 중복 제거 ID를 계속 추적합니다.

메시지 그룹 ID

특정 메시지 그룹에 속한 메시지를 지정하는 태그. 동일한 메시지 그룹에 속한 메시지는 메시지 그룹에 따라 엄격한 순서로 항상 하나씩 처리됩니다(단, 서로 다른 그룹에 속한 메시지는 순서를 따르지 않고 처리될 수 있음).

수신 요청 시도 ID

ReceiveMessage 호출의 중복 제거에 사용되는 토큰.

시퀀스 번호

Amazon SQS가 각 메시지에 할당하는 대규모의 비연속 숫자.

FIFO 전달 논리

다음 개념은 FIFO 에서 메시지를 보내고 받는 것을 더 잘 이해하는 데 도움이 될 수 있습니다.

메시지 전송

여러 개의 메시지가 FIFO 큐로 연속으로 전송되는 경우 각각 고유한 메시지 중복 제거 ID가 있으며, Amazon SQS 메시지를 저장하고 전송을 확인합니다. 그리고 나면, 각 메시지는 메시지가 전송된 순서와 정확히 같은 순서로 수신 및 처리될 수 있습니다.

FIFO 큐에서 메시지는 메시지 그룹 ID를 기준으로 정렬됩니다. 여러 호스트(또는 동일한 호스트의 다른 스레드)가 동일한 메시지 그룹 ID를 가진 메시지를 FIFO 큐로 전송하는 경우, Amazon SQS 는 메시지를 처리하는 순서대로 저장합니다. Amazon SQS가 메시지 전송 및 수신 순서를 유지하려면, 각 생성자가 고유한 메시지 그룹 ID를 사용하여 모든 메시지를 전송해야 합니다.

FIFO 큐 로직은 메시지 그룹 ID 에 대해서만 적용됩니다. 각 메시지 그룹 ID는 Amazon SQS 대기열에서 고유하게 정렬된 메시지 그룹을 나타냅니다. 각각의 메시지 그룹 ID의 경우, 모든 메시지가 엄격한 순서로 전송되고 수신됩니다. 그렇지만, 메시지 그룹 ID 값이 다른 메시지는 다른 순서로 전송 및 수신될 수 있습니다. 메시지 그룹 ID를 메시지와 연결해야 합니다. 사용자가 메시지 그룹 ID를 지정하지 않으면 작업에 실패합니다. 주문 메시지의 단일 그룹이 필요한 경우 FIFO 큐로 전송된 메시지에 대해 동일한 메시지 그룹 ID를 제공하십시오.

메시지 수신

특정 메시지 그룹 ID를 사용하는 메시지를 수신하도록 요청할 수 없습니다.

FIFO 큐에서 여러 메시지 그룹 ID로 메시지를 수신할 때 Amazon SQS 첫 번째 시도는 가능한 한 동일한 메시지 그룹 ID를 가진 메시지를 반환하려고 합니다. 따라서 다른 소비자들은 메시지 그룹 ID가 다른 메시지를 처리할 수 있습니다.

참고

MaxNumberOfMessages 작업의 ReceiveMessage 요청 파라미터를 사용하여 단일 호출로 최대 10개 메시지를 받을 수 있습니다. 이러한 메시지는 FIFO 순서를 유지하며 동일한 메시지 그룹 ID를 가질 수 있습니다. 따라서 동일한 메시지 그룹 ID로 사용할 수 있는 메시지가 10개 미만인 경우, 다른 메시지 그룹 ID로부터 동일한 배치의 10개 메시지로 메시지를 수신할 수 있지만 FIFO 순서는 그대로 유지됩니다.

다수의 재시도 횟수

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

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

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

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

정확히 1회 처리

표준 큐와 달리 FIFO 큐는 중복 메시지를 보내지 않습니다. FIFO 큐는 중복 항목을 큐로 보내지 않도록 도와줍니다. 5분 중복 제거 간격 내에 SendMessage 작업을 재시도하면, Amazon SQS가 대기열에 중복 항목을 삽입하지 않습니다.

중복 제거를 구성하려면 다음 중 하나를 실시해야 합니다.

  • 콘텐츠 기반 중복 제거 활성화. 이 작업을 통해 Amazon SQS는 SHA-256 해시를 사용한 후 메시지 본문을 사용하여 메시지 중복 제거 ID를 생성하지만, 메시지 속성은 생성하지 않습니다—. 자세한 내용은 CreateQueue, GetQueueAttributes의 설명서 및 Amazon Simple Queue Service API ReferenceSetQueueAttributes 작업을 참조하십시오.

  • 메시지에 메시지 중복 제거 ID 값을 명시적으로 지정하거나 시퀀스 번호를 표시합니다. 자세한 내용은 SendMessage, SendMessageBatch의 설명서 및 Amazon Simple Queue Service API ReferenceReceiveMessage 작업을 참조하십시오.

표준 대기열에서 FIFO 대기열로 이동

표준 큐를 사용하는 기존 응용 프로그램이 있고 FIFO 큐의 순서 지정 또는 정확히 한 번 처리 기능을 활용하려면 큐와 응용 프로그램을 올바르게 구성해야 합니다.

참고

기존 표준 대기열을 FIFO 대기열로 변환할 수 없습니다. 이동하려면 애플리케이션에 대한 새 FIFO 큐를 생성하거나 기존 표준 큐를 삭제하고 FIFO 큐로 다시 만들어야 합니다.

다음 체크리스트를 사용하여 애플리케이션이 FIFO 대기열에서 올바르게 작동하는지 확인합니다.

  • 배치 처리를 사용하면 FIFO 대기열은 API 메서드(SendMessageBatch, ReceiveMessage 또는 DeleteMessageBatch)별 초당 최대 3,000개의 트랜잭션을 지원합니다. 3,000개의 트랜잭션은 300개의 API 호출을 나타내며, 각각 10개의 메시지를 배치 처리합니다. 할당량 증가를 요청하려면 지원 요청을 제출하십시오. 배치 처리가 없으면 FIFO 대기열은 API 메서드(SendMessage, ReceiveMessage 또는 DeleteMessage)별 초당 최대 300개의 API 호출을 지원합니다.

  • FIFO 대기열은 메시지당 지연을 지원하지 않으며 대기열당 지연만 지원합니다. 애플리케이션에서 각 메시지마다 동일한 DelaySeconds 파라미터 값을 설정하는 경우, 대신 애플리케이션을 수정하여 메시지당 지연을 제거하고 전체 대기열에서 DelaySeconds를 설정해야 합니다.

  • FIFO 큐로 전송된 모든 메시지는 메시지 그룹 ID가 필요합니다. 정렬된 여러 메시지 그룹이 필요하지 않은 경우, 모든 메시지에 동일한 메시지 그룹 ID를 지정합니다.

  • FIFO 큐로 메시지를 보내기 전에 다음을 확인하십시오.

    • 애플리케이션에서 본문이 동일한 메시지를 전송할 수 있는 경우, 애플리케이션을 수정하여 전송한 각 메시지별로 고유한 메시지 중복 제거 ID를 지정합니다.

    • 애플리케이션에서 고유한 본문 메시지를 전송하는 경우, 콘텐츠 기반 중복 제거를 활성화할 수 있습니다.

  • 소비자에게 맞게 코드를 변경하지 않아도 됩니다. 그렇지만, 메시지를 처리하는 데 오랜 시간이 걸리고 제한 시간 초과를 높은 값으로 설정하는 경우, 각 ReceiveMessage 작업에 수신 요청 시도 ID를 추가하는 것이 좋습니다. 그러면 네트워킹 오류가 발생한 경우에도 여러 번 수신 시도를 할 수 있고 실패한 수신 시도로 인해 대기열이 일시 중지되지 않습니다.

자세한 내용은 Amazon Simple Queue Service API Reference 단원을 참조하십시오.

Compatibility

클라이언트

현재 Amazon SQS Buffered Asynchronous Client에서는 FIFO 대기열을 지원하지 않습니다.

서비스:

응용 프로그램에서 여러 AWS 서비스 또는 다양한 AWS FIFO 큐를 지원하지 않는 서비스 기능을 이해하는 것이 중요합니다.

일부 AWS 또는 외부 서비스를 통해 알림을 보낼 수 있습니다. Amazon SQS FIFO 큐를 대상으로 설정할 수 있지만 FIFO 큐와 호환되지 않을 수 있습니다.

다음 AWS 서비스의 기능은 현재 FIFO 대기열과 호환되지 않습니다.

FIFO 큐와 다른 서비스의 호환성에 대한 자세한 내용은 서비스 설명서를 참조하십시오.