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

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

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

Amazon SQS FIFO 대기열의 처리량은 프리뷰 버전이 출시 중이기 때문에 변경될 수도 있습니다. 자세한 내용은 미리 보기: FIFO 대기열에 대한 높은 처리량 단원을 참조하세요.

FIFO 대기열은 모든 기능을 가지고표준 대기열.

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

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

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

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

FIFO 대기열은 정확히 1회 처리를 제공하지만 초당 트랜잭션 (TPS) 수가 제한적입니다.

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

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

참고

FIFO 대기열의 이름은 다음과 같이 끝나야 합니다..fifo접미사 접미사는 문자 80개의 대기열 이름 할당량에 포함됩니다. 대기열이 있는지 확인하려면 다음과 같이 하십시오.FIFO대기열 이름이 접미사로 끝나는지 확인하여 줄 수 있습니다.

Amazon SQS FIFO 대기열은 Amazon SQS 사용할 수 있는 모든 리전에서 사용할 수 있습니다.

Amazon SQS 콘솔을 사용하여 대기열을 생성하고 구성하는 방법에 대한 자세한 내용은 단원을 참조하십시오.Amazon SQS 대기열 생성. Java 예제에 대한 자세한 내용은Amazon SQS 자바 SDK 예제.

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

FIFO 대기열 작업에 대한 모범 사례는Amazon SQS FIFO 대기열에 대한 추가 권장 사항Amazon SQS 표준 대기열과 FIFO 대기열에 대한 권장 사항.

클라이언트와 서비스가 FIFO 대기열과 호환되는지 여부에 관한 정보는 단원을 참조하십시오.Compatibility.

메시지 정렬

FIFO 대기열은 다음을 개선하고 보완합니다.표준 대기열. 이 대기열 유형의 가장 중요한 기능은 다음과 같습니다.FIFO (선입선출) 납품정확히 1회 처리:

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

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

또한 FIFO 대기열은메시지 그룹단일 대기열 내에서 정렬된 여러 메시지 그룹을 사용할 수 있습니다. FIFO 대기열 내에서 메시지 그룹의 수에는 할당량이 없습니다.

주요 용어

다음 주요 용어 설명은 FIFO 대기열의 기능을 보다 정확하게 이해하는 데 도움이 될 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon 단순 대기열 Service API 참조.

메시지 중복 제거 ID

전송된 메시지의 중복 제거에 사용되는 토큰입니다. 특정 메시지 중복 제거 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를 사용하는 메시지를 수신하도록 요청할 수 없습니다.

메시지 그룹 ID가 여러 개 있는 FIFO 대기열에서 메시지를 수신할 경우, Amazon SQS 먼저 메시지 그룹 ID가 동일한 메시지를 가능한 한 많이 반환하려고 시도합니다. 따라서 다른 소비자들은 메시지 그룹 ID가 다른 메시지를 처리할 수 있습니다.

참고

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

다수의 재시도 횟수

FIFO 대기열을 사용하면 생산자 또는 소비자가 여러 번 재시도할 수 있습니다.

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

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

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

정확히 1회 처리

표준 큐와 달리 FIFO 큐는 중복 메시지를 도입하지 않습니다. FIFO 대기열을 사용하면 대기열에 중복 항목을 전송하지 않습니다. 다시 시도 하는 경우SendMessage작업을 5분 중복 제거 간격 내에서 수행하더라도 Amazon SQS 중복 항목을 대기열에 삽입하지 않습니다.

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

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

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

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

표준 대기열을 사용한 기존 애플리케이션을 사용하고 있으면서 FIFO 대기열의 정렬 또는 정확히 1회 처리 기능을 활용하려는 경우 대기열과 애플리케이션을 올바르게 구성해야 합니다.

참고

기존 표준 대기열을 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 단순 대기열 Service API 참조.

Compatibility

클라이언트

Amazon SQS 버퍼링된 비동기 클라이언트는 현재 FIFO 대기열을 지원하지 않습니다.

서비스

애플리케이션에서 여러 AWS 서비스를 사용하거나 AWS와 외부 서비스를 혼합하여 사용하는 경우, FIFO 대기열을 지원하지 않는 서비스 기능을 잘 알고 있어야 합니다.

Amazon SQS 알림을 전송하는 일부 AWS 또는 외부 서비스는 FIFO 대기열을 대상으로 설정하도록 허용하기는 하지만 FIFO 대기열과 호환되지 않을 수 있습니다.

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

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